LeetCode【240】搜索二维矩阵

题目:
LeetCode【240】搜索二维矩阵_第1张图片
思路:
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;
}

你可能感兴趣的:(LeetCode-二分查找,LeetCode-数组,leetcode,矩阵,算法)