
看到这题我就想到之前被我当作这题做的【力扣hot100题】(020)搜索二维矩阵Ⅱ
其实是完全不一样的两题,个人觉得这道题更简单也更考验基础,那道题思路更难想到但代码更好写。
两个二分查找结束,要注意的是第一个二分查找找的是不大于target但最接近的那个数,和上一题不一样。
cpp
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int left=0;
int right=matrix.size()-1;
int result=0;
while(left<=right){
int mid=(left+right+1)/2;
if(matrix[mid][0]<target) {result=mid;left=mid+1;}
else if(matrix[mid][0]>target) right=mid-1;
else return 1;
}
left=0;
right=matrix[0].size()-1;
while(left<=right){
int mid=(left+right+1)/2;
if(matrix[result][mid]<target) left=mid+1;
else if(matrix[result][mid]>target) right=mid-1;
else return 1;
}
return 0;
}
};