在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。首先選取陣列中右上角的數字。如果該數字等於要查詢的數字,查詢過程結束;如果該數字大於要查詢的陣列,剔除這個數字所在的列;如果該數字小於要查詢的數字,剔除這個數字所在的行。也就是說如果要查詢的數字不在陣列的右上角,則每一次都在陣列的查詢範圍中剔除一行或者一列,這樣每一步都可以縮小查詢的範圍,直到找到要查詢的數字,或者查詢範圍為空。
如果在乙個二維陣列中找到數字7,存在則返回true,如果沒找到則返回false。
首先,8大於7,下一次只需要在8的左邊區域查詢;然後,5小於7,下一次只需要在5的下方區域查詢;按照這種規則進行查詢,如果查詢到相同的,則返回true,否則返回false。
#-*- python3.6.6 -*-
#-*- jlutiger -*-
class
solution:
#array 二維列表
deffind(self, target, array):
#write code here
rows =len(array)
cols =len(array[0])
if rows >0 and cols >0:
row =0
col = cols-1
while rowand col>=0:
if target ==array[row][col]:
return
true
elif target
col -=1
else
: row += 1
return
false
if__name__ =='
__main__':
target = 15array = [[1,2,3],[4,5,6],[7,8,9],[10,12,13]]
answer =solution()
print(answer.find(target,array))
演算法 二維陣列中的查詢
在乙個二維陣列中 每一行都按照從左到右遞增的順序排序 每一列都按照從上到下遞增的順序排序 請完成乙個函式,輸入這樣的乙個二維陣列 和乙個整數,判斷陣列中是否含有該整數 首先選取陣列中右上角的數字 如果該數等於要查詢的數字 則查詢結果結束 如果該陣列大於查詢的數字,則剔除這個陣列所在的列 如果該數字小...
演算法 二維陣列中的查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。三種方法 暴力列舉 直接遍歷二維陣列 對每行都進行二分查詢 優雅一點,選定陣列左下角或右上角,這裡選定右上角。...
刷演算法 二維陣列中的查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。例如二維陣列arr 1,2,3,4 5,6,7,8 9,10,11,12 target 7,如果按照常規的查詢...