1. 程式人生 > >劍指offer牛客系列——二維陣列的查詢

劍指offer牛客系列——二維陣列的查詢

題目描述

在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。

考慮如上圖所示的陣列,一右上角為起點,若想找的值大於起點,則範圍向下縮小,即row+1;

若小於起點,範圍向左縮小,col-1

所以target值為7時的下一狀態應在綠色塊上判斷。

起點也可以選在左下角,只有滿足向兩個方向走判斷條件不一樣即可。左上角和右下角就不可以,因為兩個方向都是大於或小於起點的。

public class Solution {
    public boolean Find(int target, int [][] array) {
        if(array== null|| array.length==0|| array[0].length==0)    return false;
        int row= 0, col= array[0].length-1;
        while(col>=0 && row<= array.length-1){
            if(array[row][col]== target)    return true;
            else if(array[row][col]< target)    row++;
            else if(array[row][col]> target)    col--;
        }
        return false;
    }
}