美文网首页
剑指offer(一)二维数组中的查找

剑指offer(一)二维数组中的查找

作者: z七夜 | 来源:发表于2018-07-28 09:21 被阅读0次

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

    思路:

    1 2 3 4 5
    2 3 4 5 6
    3 4 5 6 7

    这样一个数组,很符合题意,我们如果要是查找有没有4,从哪里开始找,我们分析一下这个二维数组的特点,1的位置,向右是变大的,向下也是变大的,5的位置,向下是变大的,向左是变小的,3向上是变小的,向右是变大的,7两边都是变小的,那么我们在查找过程,应该有两面,如果大或者如果小,我们应该不会不知道去那边,所以查找只能从3或者5开始,那样更好的确定移动的方向,不会把数据丢掉,
    本文是从3开始查找,
    那么需要注意哪些点呢,比方说我们查找8,这是一个三行5列 (2,4)的数据,我们从3(2,0)开始找,8比3大,所以坐标应该向右移动,列坐标加一,接着找,还是小于8的,那么列还是加加,当到7(2,4)的时候,还不行,列加加,(2,5),坐标越界,说明不存在这个数据,查找0也是一样的,只是行坐标的越界,是小于0,

    代码实现

    package com.itzmn.offer;
    
    
    /**
     * @Auther: 张梦楠
     * @Date: 2018/7/27 12:13
     * 简书:https://www.jianshu.com/u/d611be10d1a6
     * 码云:https://gitee.com/zhangqiye
     * @Description:
     */
    public class NuberOne {
    
    
        public static void main(String[] args) {
    
            int target = 1;
            int[][] array = {{2, 3, 4, 5}, {3, 4, 5, 6}, {4, 5, 6, 7}};
    
            boolean find = new NuberOne().Find(target, array);
            System.out.println(find);
        }
    
        public boolean Find(int target, int[][] array) {
    
            int row = array.length-1;
            int col = array[0].length-1;
    
            return get(target,array,row,0,col);
    
        }
    
        public boolean get(int target , int[][] array, int row,int col,int truecol){
    
    
            if (row < 0 || col > truecol){
                return false;
            }
            if (array[row][col] == target) {
                return true;
            }
    
            if (array[row][col] < target){
                return get(target,array,row,++col,truecol);
            }
            if (array[row][col] > target){
                return get(target,array,--row,col,truecol);
            }
    
    
            return true;
        }
    
    }
    

    在做题的时候也参考了别人的思路,希望大家可以多多指点,优化一下,
    QQ群:552113611

    相关文章

      网友评论

          本文标题:剑指offer(一)二维数组中的查找

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