0
点赞
收藏
分享

微信扫一扫

LeetCode【240】搜索二维矩阵

眼君 2023-10-15 阅读 36

题目:
在这里插入图片描述
思路:
1、单靠对角线元素无法判定位置
2、主要逐行进行二分

代码:

public boolean searchMatrix(int[][] matrix, int target) {
    int rows = matrix.length;
    int columns = matrix[0].length;

    // 按行进行二分
    for (int i = 0; i < rows; i++) {
        int left = 0, right = columns -1;
        while (left <= right) {
            int mid = left + (right -left) / 2;   // 注意这里mid代表实际数组行下标,(right-left)/2只是相对左边界的位置,还需要left+才是数组下标
            if (matrix[i][mid] == target) {
                return true;
            } else if (matrix[i][mid] > target) {
                right = mid - 1;    // 这里注意边界值,如果不-1,提交代码超出时间限制。二分都要注意边界
            } else {
                left = mid + 1;
            }
        }

    }

    return false;
}
举报

相关推荐

0 条评论