第74题
思路
这题很简单,实在不行全部遍历一下;
可以先找到行,在找到列;
找行找列都可以用二分;
代码
我只有在找列的时候二分了,找行是按照顺序找的;
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if (matrix.length == 0)
return false;
if (matrix[0].length == 0)
return false;
int rows = matrix.length;
int cols = matrix[0].length;
int rightRow = 0;
if (target < matrix[0][0])
return false;
if (target < matrix[rows - 1][0]) {
for (int i = 0; i < rows - 1; i++) {
if (target >= matrix[i][0] && target < matrix[i + 1][0]) {
rightRow = i;
}
}
} else {
rightRow = rows - 1;
}
int left = 0, right = cols - 1;
int mid = 0;
while (left <= right) {
mid = (left + right) / 2;
if (matrix[rightRow][mid] == target) {
return true;
} else if (matrix[rightRow][mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return false;
}
}