本文主要是介绍刷题日记-二维数组中查找某个目标值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
时间复杂度 使用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;}
};
这篇关于刷题日记-二维数组中查找某个目标值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!