题目:
思路:
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;
}