思路:當我們看到這道題的第一反應應該是遍歷這個二維陣列,逐個進行查詢,這樣雖然可以得到結果但是時間複雜度較大,並且沒有用到題目中給我們的線索,我們可以看到該二維數字是按照一定順序排列的。我們可以把這個四行四列的二維陣列看做乙個4*4的方格,先找出右上角的數字,如果右上角的數字是我們要找的數字就結束,如果比要找的數字小那就排除這一列(因為右上角的數字是這一列最小的),同理,如果比要找的數字大,那麼我們就排除這一行。這樣一來我們會把查詢的區域逐漸縮小。到最後沒有找到就說明沒有,反之則找到。
#include#includebool sort(int arr[4][4],int key)
if(arr[i][j]>key)如果比目標數字大則剔除這一列
else//比目標數字小則剔除這一行
}return false;
}int main()
; int n=sort(arr,7);
if(n==1)
else
return 0;
}
劍指offer 面試題04 二維陣列查詢
二維陣列查詢 在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 ...
劍指offer 面試題3 二維陣列的查詢
題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution else if array row col target col else row return ...
劍指offer面試題4 二維陣列的查詢
題目 二維陣列的查詢 在乙個二位陣列中,每一行都遞增,每一列的遞增,請完成乙個函式,查詢二維陣列中是否有number 方案 只需要每次從二維陣列的右上角開始查詢就可以了,因為如果右上角的數字都大於要查詢的number的話,那麼這一列肯定都大於number,我們只需要在剩下的列中找就行了,如果右上角的...