剑指Offer题目3:二维数组中的查找(Java)

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

思路分析

根据题干,提取主要元素:数组

二维数组bash

行:从左到右递增函数

列:从上到下递增ui

能够得出特色:行列都是有序的。spa

思路一:从右上角做为起始点进行大小比对,而后一层层排除,减少比对范围。因为行列都是有序的,所以,每次能够减少一行或者一列的全部值,直到最终定位到要查找的值,或者全部行列都排除在外,肯定不含要查找的值。code

思路二:从左下角比对起。cdn

这里只给出思路一的答案。blog

public static boolean Find(int target, int [][] array) {
    if(array != null && array.length > 0) {
        int N = array.length;
        int row = 0;
        int col = array[0].length - 1;
        while(row < N && col >= 0) {
            if(target < array[row][col]){
                col --;
            } else if(target > array[row][col]){
                row ++;
            }else {
                return true;
            }
        }
    }
    return false;
}
复制代码

相关文章
相关标签/搜索