劍指offer-二維數組中的查找
阿新 • • 發佈:2019-04-08
fin ++ div bool 空間 targe pub 二維 nlog
題目描述
在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 方法一:從[0][0]逐個查找,時間復雜度為O(n2),空間復雜度為O(1) 方法二:從[0][0]逐行,使用二分查找,時間復雜度為O(nlogn),空間復雜度為O(1) 方法三:從[n-1][0]才是查找,利用數組的性質,優化,時間復雜度為O(n),空間復雜度為O(1)1 public boolean Find(int target, int [][] array) {//數組 查找 my 2 if(null==array||0==array.length||0==array[0].length){ 3 return false; 4 } 5 int i = array.length-1; 6 int j =0; 7 while(i>=0&&j<array[0].length){ 8 if(array[i][j]==target){ 9 return true; 10 } 11 else if(array[i][j]>target){ 12 i--; 13 } 14 else{ 15 j++; 16 } 17 } 18 return false; 19 }
劍指offer-二維數組中的查找