在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
思路:因為每行或每列數字是按照順序的,所以我們先劃定范圍,可以漸少計算次數。注意,數組的length是array.length。
先判斷每列的最后一個和我們要找的數字大小,相當于先將光標置于左下角。如果目標數大于光標,則目標一定不在第一列。逐漸向右上角縮小。
public class Solution {
? ? public boolean Find(int target, int [][] array) {
? ? ? ? if (array==null){
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? int column = 0;
? ? ? ? int row = array.length-1;
? ? ? ? while(row>=0 && column<=array[0].length-1){
? ? ? ? ? ? if(target>array[row][column]){
? ? ? ? ? ? ? ? column++;
? ? ? ? ? ? }
? ? ? ? ? ? else{
? ? ? ? ? ? ? ? if(target==array[row][column]){
? ? ? ? ? ? ? ? ? ? return true;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else{
? ? ? ? ? ? ? ? ? ? row--;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return false;
? ? }
}