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

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))