剑指offer习题练习

1 二维数组的查找:

  • 在一个二维数组中 ,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列.
  • 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
  • 1 2 3 4
  • 4 8 12 16
  • 5 10 15 20

2 代码实现 :

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

    }

3 代码分析 :

因为二维数组是有序的,我们把数组看成M×N矩阵,从左到右,从上到下是依次递增的,所以我们从左下角开始循环,如果要查找的数大于左下角的数,就在右半部分的矩阵中查找(把第一列去掉,变成M×(N-1)的矩阵),因为第一列的最大的数都小于要查找的数。反之,如果要查找的数小于左下角的数,就在上半部分的矩阵中查找(把最后一行去掉,变成(M-1)×N的矩阵)。当遍历到第一行的时候还没有找到,那么就不存在。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 说明: 本文中出现的所有算法题皆来自牛客网-剑指Offer在线编程题,在此只是作为转载和记录,用于本人学习使用,不...
    秋意思寒阅读 1,225评论 1 1
  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,404评论 0 12
  • 剑指 offer 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成...
    faremax阅读 2,343评论 0 7
  • 要求:不仅仅能实现相应的功能,还需要保证代码的鲁棒性,并且能够分析代码的空间复杂度和时间复杂度。 二维数组中的查找...
    二十四桥客_阅读 1,026评论 0 1
  • 斜日成血蟾似斗, 鸿雁南飞, 七女新织袖。 夜半蝉逐金露走, 昨日春叶方觉旧。 浓雾近楼寒恶透, 异地黄花, 也为...
    隔壁猫阅读 524评论 0 0

友情链接更多精彩内容