class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix==null||matrix.length==0||matrix[0].length==0)
return false;//注意这里要判断列的数目是否为0
int left=0,right=matrix.length*matrix[0].length-1;
int mid=0;
int i=0,j=0;//矩阵的横纵坐标
while(left<right){
mid=left+(right-left)/2;
i=mid/matrix[0].length;
j=mid%matrix[0].length;//注意坐标是用列的数目来求,不是行
if(matrix[i][j]<target){
left=mid+1;
}else {
right=mid;//**为什么这里不能mid-1?**
}
}
return matrix[right/matrix[0].length][right%matrix[0].length]==target;//不能在while里判断==target,然后return true
//因为找到的最终下标值不能进入while循环了,因此需要在while外部判断
}
}
LeetCode No.74搜索二维矩阵
最新推荐文章于 2020-08-15 21:26:56 发布