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 };
  • 相关阅读:
    python numpy 介绍
    python+图像分割seg
    C++ 添加库
    input标签的disabled和readonly的区别
    linux中mysql忘记密码解决办法
    memcached服务安装与卸载
    app与服务端通信时如何进行消息校验
    缓存同步问题
    数据中添加对字段的说明
    服务器报警
  • 原文地址:https://www.cnblogs.com/jacen789/p/7736719.html
Copyright © 2011-2022 走看看