1. 程式人生 > >【劍指offer】二維陣列中的查詢

【劍指offer】二維陣列中的查詢

題目描述:

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

解題思路:

從矩陣的左下角或右上角開始搜尋,

如果目標<當前矩陣值,那麼目標值肯定不在當前行,在上面的行中

如果目標>當前矩陣值,那麼目標值肯定不在當前列,在右邊的列中

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