題目描述
在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
這道題考察的是陣列和查詢。
可能有人一上來會沒有頭緒,當我們需要解決乙個複雜的問題時,乙個很有效的辦法就是從乙個具體的問題入手,通過分析簡單具體的例子,試圖尋找普遍的規律。
以上面的二維陣列為例,我們從具體問題出發,來找規律:
首先很多人都會想到從乙個角出發,但是從哪個角呢,其實總的來說,左上右下是相同的,而左下右上是相同的,現在我們先來嘗試下左上右下:
從這個角度的話,有一點比較方便,那就是當target小於左上時或者大於右下時就可以直接判斷target並不存在在array中,然後我們來看這種情況之外的情況,那就是target大於左上或者小於右下時:
這樣看似乎範圍是在縮小,但是這個範圍總是在兩側都有,於是問題就變得麻煩了。然後我們來看看左下和右上:
左下:如果target小於array_data,掃瞄範圍向上移一位,反之向右移,逐步縮小範圍
右上:如果target大於array_data,掃瞄範圍向下移一位,反之向左移,逐步縮小範圍
我們發現這樣的話範圍的縮小是比較有章法的,所以這樣做比較容易,下面來看下python的解答:
class
solution:
deffind
(self, target, array):
i = len(array) - 1
j = 0
while i >= 0
and j < len(array[0]):
if target == array[i][j]:
print
true
return
0elif target > array[i][j]:
j+=1
else:
i-=1
return
false
pro = solution()
pro.find(10,[[1,3,5],[2,4,6]])
以後有機會可以擴充套件字元陣列的查 劍指offer 1 二維陣列查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。二維陣列是有序的,比如下面的資料 1 2 3 4 5 6 7 8 9可以直接利用左下角數字開始查詢 大於 比較...
劍指offer 1 二維陣列查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數 首先是先模擬獲取隨機遞增陣列 public static int getarray int n,int m 初...
劍指Offer 1 二維陣列查詢
劍指offer 1 二維陣列查詢 馬上也要畢業開始找工作了,自己程式設計能力實屬弟弟,笨鳥先飛,雖然飛得好像也不早了,打算每天做一道吧,爭取暑假前做完。準備秋招了,目前就是在牛客網上做題為主 題目要求是這樣 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從...