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

    题目描述:

    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    分析:

    因为二维数组中,从左到右和从上到下都是递增排序,可以从右上角往左下角查找(或者从左下角往右上角查找),只需O(n)的时间复杂度,不需要遍历整个数组,那样时间复杂度是O(n^2)。从右上角往左下角查找,如果该位置的数比目标小,就往左移一位;比目标大,就往下移一位;相等则找到了,查找停止。

    代码:

     1 class Solution {
     2 public:
     3     bool Find(int target, vector<vector<int> > array) {
     4         int row = array.size();
     5         int col = array[0].size();
     6         int i = 0, j = col - 1; // 从右上角往左下查找
     7         while(i < row && j >= 0) {
     8             if(array[i][j] == target) return true;  // 找到了
     9             if(array[i][j] > target) {  // 往左查找
    10                 j--;
    11                 continue;
    12             }
    13             if(array[i][j] < target) {  // 往下查找
    14                 i++;
    15                 continue;
    16             }
    17         }
    18         return false;
    19     }
    20 };
  • 相关阅读:
    串口 规格严格
    SWATCH 规格严格
    两个属性 规格严格
    ChinaUnix转载 规格严格
    Perl学习 规格严格
    3月5日工作日志88250
    使用NetBeans6开发OSGi应用(4)——Servlet与Http服务[88250原创]
    ごじゅうおん
    使用Apache Solr实现企业搜索
    3月6日工作日志88250
  • 原文地址:https://www.cnblogs.com/jacen789/p/7736719.html
Copyright © 2011-2022 走看看