搜索二维矩阵
题目中二维矩阵的描述很清晰,我们也能一下子就想到这个二维矩阵展开成一维之后是非严格递增的。在有序数组中找target,那么很容易就能想到双指针。
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
//双指针,直接把二维矩阵当成一维数组用,则一维数组是非严格递增的,那么双指针就很好写了
int n=matrix.size();
int m=matrix[0].size();
int l=0;
int r=n*m-1;
while(l<=r)
{
int mid=(r-l)/2+l;
int i=mid/m;
int j=mid-i*m;
if(matrix[i][j]==target)
{
return true;
}else if(matrix[i][j]>target)
{
r=mid-1;
}else
{
l=mid+1;
}
}
return false;
}
};