思路:
从矩阵的右上角开始找,有以下三种情况:
- matrix[i][j] == target 返回true
- matrix[i][j] > target 说明该列以下的全部大于target,则j--
- matrix[i][j] < target 说明该列以下的全部小于target,则i++
代码:
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(!matrix.size()) return false;
int n = matrix.size(),m = matrix[0].size();
int i = 0, j = m - 1;
while(i < n && j >= 0){
if(matrix[i][j] == target) return true;
else if(matrix[i][j] > target) j--;
else i++;
}
return false;
}
};
评论区