美文网首页
面试题3-二维数组中的查找

面试题3-二维数组中的查找

作者: 小庄bb | 来源:发表于2017-08-30 18:30 被阅读9次

题目要求

在一个二维数组中,每一行都会按照从左至右递增的规律排列,每一列都会按照从上到下递增的规律排列。请完成一个函数,输入一个二维数组与一个整数,判断数组中是否有该整数

题目解析

思路一:

  • 分析

已知二位数组的元素分布规律,可以知道对于右上角的元素m来说,同行左边所有的元素都小于该元素,同列下面的元素都大于该元素。
于是,我们选择取右上角的元素m与查找元素n比较,若是m>n,则可以排除m所属的那一列,若m<n,则可以排除m所属的那一行,若是m=n则直接返回ture
循环上一步,直至找到,或者查找完整个二维数组。

  • 代码段
public boolean demo1(int[][] datas , int data) {
        
        //判非空
        if(datas == null || datas.length == 0) {
            return false ;
        }
        
        int row = 0 ;
        int col = datas[0].length-1 ;
        
        //开始查找
        while( row >= 0 && col >= 0 ) {
            
            if( datas[row][col] == data ) {
                return true ;
            }else if( datas[row][col] > data ) {
                col -- ;
            }else if( datas[row][col] < data ) {
                row ++ ;
            }
        }
        
        return false ;
        
    }

测试代码

public static void main(String[] args) {
        
        int[][] datas = {{1,2,8,9},
                         {2,4,9,12},
                         {4,7,10,13},
                         {6,8,11,15}} ;
        
        Demo d1 = new Demo() ;
        System.out.println(d1.demo1(datas, 7));
        
        System.out.println(d1.demo1(datas, 0)) ;
        
    }

运行结果

true
false


看完整源码戳源码地址

相关文章

  • 剑指offer

    面试题3——数组中重复的数字 使用LinkedHashMap,有序存放。 面试题4——二维数组中的查找 首先选...

  • 剑指offer面试题分类总结

    数组: 面试题3:数组中重复的数字面试题4:二维数组中的查找面试题21:调整数组顺序使奇数位于偶数前面面试题39:...

  • 2.3.1 数组

    面试题3:数组中重复的数字 面试题4:二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一...

  • LeetCode | 面试题04. 二维数组中的查找【剑指Off

    LeetCode 面试题04. 二维数组中的查找【剑指Offer】【Easy】【Python】【数组】 问题 力扣...

  • 剑指offer第二版-4.二维数组中的查找

    本系列导航:剑指offer(第二版)java实现导航帖 面试题4:二维数组中的查找 题目要求:一个二维数组中,每一...

  • 剑指offer目录

    目录 面试题3 在二维数组中查找 面试题15 链表中倒数第K个数 面试题16 反转链表 面试题44 扑克牌的顺子

  • 二维数组中的查找

    《剑指offer》面试题4:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都...

  • 剑指offer每日一更

    题目 // 面试题4:二维数组中的查找// 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按...

  • 面试题3-二维数组中的查找

    题目要求 在一个二维数组中,每一行都会按照从左至右递增的规律排列,每一列都会按照从上到下递增的规律排列。请完成一个...

  • 算法题

    行列都是有序的二维数组,查找k是否存在【查找法】 二维数组中的查找(行列分别有序数组的二分查找)【递归法】 快速排...

网友评论

      本文标题:面试题3-二维数组中的查找

      本文链接:https://www.haomeiwen.com/subject/lruxjxtx.html