刷题日记-二维数组中查找某个目标值
时间复杂度 使用O(M+N)
使用一种比较巧妙的搜索方法:
- 从右上角开始搜索即x=0,y=n-1,arr[x][y]开始搜索
- 若arr[x][y]== target 则返回true
- 若arr[x][y]> target 若target小于当前值,只可能向左,即–y
- 相反,则向下向更大的值搜索,++x
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
//总右上角开始搜索
//如果比它小 只能往左
int m = array.size();
int n = array[0].size();
int x = 0, y = n-1;
//array[0][n-1]
while(x<m && y >=0)
{
if(array[x][y]==target)
{
return true;
}
if(array[x][y]>target) //target比当前值小 到前一列左边找 肯定更小
{
--y;
}
else
{
++x;
}
}
return false;
}
};
本文来自博客园,作者:勒勒乐了,转载请注明原文链接:https://www.cnblogs.com/matytan/p/15519527.html

浙公网安备 33010602011771号