劍指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;
}
複製代碼

相關文章
相關標籤/搜索