思路:讲二维数组想象成一维数组进行二分查找
主要是索引,行索引是i/n,列索引是i%n
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix == null || matrix.length < 1 || matrix[0].length < 1){
return false;
}
//使用虚数,把当前的二维数组抽象成一维数组
int m = matrix.length;
int n = matrix[0].length;
int l = 0,r = m * n - 1;
while(l <= r){
int mid = l + r >> 1;
int i = mid/n,j = mid%n;
if(matrix[i][j] > target){
r = mid - 1;
}else if(matrix[i][j] < target){
l = mid + 1;
}else{
return true;
}
}
return false;
}
}