1. 程式人生 > >劍指offer-二維數組中的查找

劍指offer-二維數組中的查找

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-二維數組中的查找