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

    问题描述:

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

    示例:

    array=

    {

     {1,2,8,9},

     {2,4,9,12},

     {4,7,10,13},

     {6,8,11,15}

    }

    target = 7

    输出结果应为true  (array包含target)

    解题思路:

    每次拿右上角的数字和target比较,大于剔除列,小于剔除行。

    重复上述步骤,直到查找成功或出界。

    如上例,target=7与数组右上角元素array[0][3]=9比较,7小于9,故去除array最后一列。

    target=7与余下数组右上角元素array[0][2]=8比较,7小于8,故去除array最后一列

    target=7与余下数组右上角元素array[0][1]=2比较,7大于2,故去除array最上一行

    target=7与余下数组右上角元素array[1][1]=4比较,7大于4,故去除array最上一行 

    target=7与余下数组右上角元素array[2][1]=7比较,7等于7,返回true。

    实现代码:

        public static boolean test (int target, int[][] array) {
    
            int i = 0;
            int j = array[0].length - 1;
    
            while (i<array.length && j>=0) {
                if (target == array[i][j]) return true;
                else if (target < array[i][j]) j--;
                else i++;
            }
    
            return false;
        }

    复杂度:

    O(M+N),M、N分别为数组的行数与列数。

  • 相关阅读:
    spring boot自动配置
    servlet类与Spring Controller类的关系
    Junit中的setup和teardown方法
    dependency的scope
    mapper的namespace
    mybatis缓存
    Ehcache(05)——缓存的查询
    Ehcache(04)——设置缓存的大小
    Ehcache(03)——Ehcache中储存缓存的方式
    Ehcache(02)——ehcache.xml简介
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9265464.html
Copyright © 2011-2022 走看看