在leetcode做过,之前的文章有写。

public class Solution {
public boolean Find(int target, int [][] array) {
//1.二分法:沿对角线遍历,分别对当前元素所在的行和列进行二分查找
//2.从右上角开始遍历,若当前元素小于目标,则下移,若大于则左移。直到走到左下或越界
int m = array.length,n = array[0].length;
int i=0,j=n-1;
while(i<m&&j>=0){
if(array[i][j]>target)
j--;
else if(array[i][j]<target)
i++;
else
return true;
}
return false;
}
}
这篇博客介绍了一种在二维矩阵中查找特定目标的高效算法。通过结合二分查找和从右上角开始的遍历策略,可以在O(log(mn))的时间复杂度内找到目标值。算法首先沿对角线进行二分查找,然后根据目标值与当前位置的关系进行移动,直到找到目标或遍历结束。
673

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



