美文网首页
剑指offer problem 3:二维数组中的查找(java)

剑指offer problem 3:二维数组中的查找(java)

作者: vendettar | 来源:发表于2018-12-11 17:09 被阅读0次
    public class Find {
    
        /**
         * 思路:先选取二位数字右上角的数字进行比较
         * 如果相等,则结束查找
         * 如果右上角数字小于要查找的数字,则排除右上角数字所在的行
         * 如果右上角数字大于要查找的数字,则排除右上角数字所在的列
         */
        private static boolean find(int[][] arr,int val){
            int column = arr[0].length - 1;//列的变化 arr[0].length - 1 -> 0
            int row = 0;                   //行的变化 0 -> arr.length
            while (column > 0 && row < arr.length){
                if (arr[row][column] == val)
                    return true;
                else if (arr[row][column] > val)
                    column--;
                else
                    row++;
            }
            return false;
        }
    
        public static void main(String[] args) {
            int[][] arr = new int[][]{{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,22,15}};
            System.out.println(find(arr,7));
            System.out.println(find(arr,5));
        }
    

    result:

    true
    false
    

    相关文章

      网友评论

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

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