Leetcode 题目解析之 Search a 2D Matrix

举报
ruochen 发表于 2022/01/14 13:55:06 2022/01/14
【摘要】 Leetcode 题目解析之 Search a 2D Matrix

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

  • Integers in each row are sorted from left to right.
  • The first integer of each row is greater than the last integer of the previous row.
    For example,

Consider the following matrix:

[

1, 3, 5, 7,

10, 11, 16, 20,

23, 30, 34, 50

]

    public boolean searchMatrix(int[][] matrix, int target) {
        int mx = matrix.length;
        int my = matrix[0].length;
        int l = 0;
        int r = mx * my;
        while (l < r) {
            int m = l + (r - l) / 2;
            // 将m转换成x、y
            int x = m / my;
            int y = m % my;
            // 二分查找:matrix[x][y]转换成一维数组,坐标就是m
            if (matrix[x][y] == target) {
                return true;
            } else if (matrix[x][y] < target) {
                l = m + 1;
            } else {
                r = m;
            }
        }
        return false;
    }
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。