从右上角斜着往左下角看,整个矩阵有着类似二叉排序树的性质,左边的值比根节点小,右边的值比根节点大。
按照这个性质进行查找即可,注意边界。
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.empty()) return false;
int n = matrix.size();
int m = matrix[0].size();
int i = 0, j = m - 1;
while(i < n && j >= 0) {
if(target == matrix[i][j]) return true;
else if (target < matrix[i][j]) --j;
else ++i;
}
return false;
}
};