解题思路:可以采用两次二分查找的方法查找目标,第一次二分查找定位到所在的行,第二次在所在的行运用二分查找找到目标。
代码如下:
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix==null || matrix.length==0 || matrix[0].length==0)
return false;
int low = 0;
int high = matrix.length-1;
while(low<=high){
int mid = (low+high)/2;
if(matrix[mid][0]==target)
return true;
else if(matrix[mid][0]<target)
low = mid+1;
else
high = mid-1;
}
int row = high;
if(row<0)
return false;
low = 0;
high = matrix[0].length-1;
while(low<=high){
int mid = (low+high)/2;
if(matrix[row][mid]==target)
return true;
else if(matrix[row][mid]<target)
low = mid+1;
else
high = mid-1;
}
return false;
}
}