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 };
  • 相关阅读:
    js 鸭式辨型法
    javascript performence
    js继承实现
    js深入理解构造函数和原型对象
    js 变量类型
    JS 严格模式
    鼠标滚动事件
    css3-transform
    js.map error
    canvas(一) 基本线条绘制
  • 原文地址:https://www.cnblogs.com/jacen789/p/7736719.html
Copyright © 2011-2022 走看看