题目如下
数据范围
示例
这道题可以从左下角开始搜索,我们令开始的地址为(x,y)由于矩阵的特性当m(x,y)
等于目标时自然直接返回,当大于目标时我们不可能向右边搜索因为向右是递增只能向上走
即x--,否则只能向右走因为所在这一列的最大值都小于目标了。
注意:当xy越界的时候必然找不到
通过代码
cpp
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int n = matrix.size();
int m = matrix[0].size();
int x = n - 1,y = 0;
while(true){
if(x < 0 || x >= n || y < 0 || y >= m){
return false;
}
if(matrix[x][y] == target)return true;
if(matrix[x][y] > target)x--;
else y++;
}
return true;
}
};
