分析
有题意可知,将矩阵按行排列可化为一个有序数列,可采用二分来寻找目标值,其中中间值的下标为matrix[mid/n][mid%n],n为列数。
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m=matrix.size(),n=matrix[0].size();
int l=0,r=m*n-1;
while(l<=r){
int mid=(l+r)>>1;
int x=matrix[mid/n][mid%n];
if(x<target)l=mid+1;
else if(x>target)r=mid-1;
else return true;
}
return false;
}
};