zoukankan      html  css  js  c++  java
  • 二维数组中的查找

    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

    请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    样例:

    输入数组:
    
    [
      [1,2,8,9],
      [2,4,9,12],
      [4,7,10,13],
      [6,8,11,15]
    ]
    
    如果输入查找数值为7,则返回true,
    
    如果输入查找数值为5,则返回false。

    首先有两种思路:

    二分查找是最直观的,横的方向和竖方向都是有序数列。所以可以遍历横方向然后利用二分查找。O(nlogn)

    右上角往下是增加,往左走是减小。所以利用这个规律查找目标值。O(n)

    bool searchArray(vector<vector<int>> array, int target) {
        if (array.empty() || array[0].empty()) return false;
        int cols=array.at(0).size()-1;
        int rows=0;
        while(cols>=0&&rows<array.size()){
            if(array[rows][cols]==target)
                return 1;
            else if(array[rows][cols]<target){
                rows++;
            }else{
                cols--;
            }
    
        }
        return 0;
    }
    

      

    加油啦!加油鸭,冲鸭!!!
  • 相关阅读:
    UVa 116 单向TSP(多段图最短路)
    POJ 1328 Radar Installation(贪心)
    POJ 1260 Pearls
    POJ 1836 Alignment
    POJ 3267 The Cow Lexicon
    UVa 1620 懒惰的苏珊(逆序数)
    POJ 1018 Communication System(DP)
    UVa 1347 旅行
    UVa 437 巴比伦塔
    UVa 1025 城市里的间谍
  • 原文地址:https://www.cnblogs.com/clarencezzh/p/10934993.html
Copyright © 2011-2022 走看看