题目描述
思路分析
二分
先找到
t
a
r
g
e
t
target
target所在的第
k
k
k行,在第
k
k
k行里二分就行。
代码实现
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int k=0;
for(k=0;k<matrix.size();k++){
if(matrix[k][0]<=target&&matrix[k][matrix[0].size()-1]>=target) break;
if(k==matrix.size()-1) return false;
}
int l=0,r=matrix[0].size()-1;
while(l<r){
int mid=l+r>>1;
if(matrix[k][mid]>=target) r=mid;
else l=mid+1;
}
return matrix[k][r]==target;
}
};