每日AC-剑指offer-数组查找

来源:互联网 发布:怎么打开tcp端口1433 编辑:程序博客网 时间:2024/06/05 00:23

每日AC-剑指offer-数组查找



题目描述

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


看源码:

/** * 类说明 *  * <pre> * Modify Information: * Author        Date          Description * ============ =========== ============================ * DELL          2017年4月27日    Create this file * </pre> *  */public class Jianzhiofferchazhaoshuzu {        public static  boolean Find(int target, int [][] array) {                /**特定序列数:数组查找原理:         *  1, 2 , 4         *  2 ,3, 5         *  4, 6, 7         *  随便找一个 3 ,从array[0][2]开始找          *  1. 比4小 列数减去1  从array[0][1] 找         *  2. 比2大行数加1  从array[1][1]找,找到了         *  总结一句话就是 ,比当前值小,列数减去1 ;比当前值大, 行数加1         */               boolean found = false;       int rows = array.length;       int columns = array[0].length;               // 从第一行最后一列开始找       int i = 0;       int j = columns-1;       while(i < rows && j >=0){           if(array[i][j] == target){               found = true;               break;           }else if(array[i][j] < target){               i++;           }else{               j--;           }       }        return found;    }    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        int [][] array ={                {1,2,4},                {2,3,5},                {4,5,7}            };//        for(int i = 0; i <array.length; i++){//行数//            for(int j = 0; j <array[0].length; j++){//列数//                System.out.print(array[i][j]+" ");//            }//            System.out.println();//        }        boolean ans = Find(9,array);        System.out.println(ans);    }}


0 0
原创粉丝点击