目录
来源:
题目描述:

思路:

设置第 i 和 j ,分别表示行和列,先找到坐下角
因为是非递减排序,左侧值是这个一行中最小的,如果该值比target大的话说明该行不可能有target存在 i--;

当 i 所在位置比target小时,说明该行可能有目标值我们遍历这一行 j++当所在值大于目标时退出 i -- j不变

代码实现:
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
int i=matrix.size()-1;
int j=0; //放置在左下角
while(i>=0&&j<matrix[0].size()){
if(matrix[i][j]>target){
i--;
}
else if(matrix[i][j]<target){
j++;
}
else return true;
}
return false;
}
};
时间复杂度为O(m+n) 空间复杂度为O(1)
寻找二维矩阵中的目标值
该文介绍了如何在非递减排序的二维矩阵中查找目标值,采用从右下角开始的搜索策略,通过比较当前元素与目标值的大小来调整行指针i和列指针j,最终达到O(m+n)的时间复杂度。
371

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



