(1)从左下角开始seach。
bool searchMatrix(vector<vector<int> >& matrix, int target) {
int m = matrix.size();
if(m==0) return false;
int n = matrix[0].size();
if(n==0) return false;
int i = m-1;
int j = 0;
while(i >= 0 && j < n) {
int x = matrix[i][j];
if(target == x) return true;
else if(target < x)
i--;
else
j++;
}
return false;
}
(2) 从右上角开始search。
bool searchMatrix(vector<vector<int> >& matrix, int target) {
if(matrix.size()==0 || matrix[0].size()==0) return false;
int i=0, j=matrix[0].size()-1;
while(i<matrix.size() && j>=0) {
int x = matrix[i][j];
if(target == x) return true;
else if(target < x) --j; //不在第 j 列,在前面。
else ++i; //不在第 i行,在后面。
}
return false;
}