原题地址
题目内容
题目分析
这个矩阵从左到右逐渐增大,从上到下也是逐渐增大的。先从最右列第一个数开始比较,如果target大于它,说明target在这一列,否则往左查找,比较左边一列第一个数,以此类推。
确定列数后开始向下寻找行数即可,如果找不到则返回结果fasle。
代码实现
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.size() == 0){
return false;
}
int row = matrix.size();
int col = matrix[0].size();
int i = 0,j = col-1;
while(i < row && j >= 0){
if(matrix[i][j] == target) return true;
else if(matrix[i][j] > target){
j--;
}else i++;
}
return false;
}
};
本文介绍了一种高效查找二维有序矩阵中目标值的方法。通过对比矩阵右上角元素与目标值,逐步缩小查找范围,最终确定目标值是否存在。该算法的时间复杂度为O(m+n)。
429

被折叠的 条评论
为什么被折叠?



