二維有序陣列的查詢 python解決

2021-07-27 00:14:23 字數 818 閱讀 5283

一點一點的進步

題目是 在:

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列

和乙個整數,判斷陣列中是否含有該整數。

解題的思路:菜菜的我想的自然是暴力遍歷,當然那是不行的。看下面大神的思路,恍然大悟。

首先選取陣列右上角的數字,如果該數字等於要查詢的數字,則查詢結束;

如果要查詢的數字大於該數字,剔除這個數字所在的行。

如果要查詢的數字小於該數字,剔除這個數字所在的列,

這樣每一步都可以剔除一行或一列,查詢的速度比較快。

當然也可以選擇左下角的數字,思路同上。

這樣子查詢的話,每次能比較一行或者一列,效率就快了。

最重要的,自己用python 敲了一下,正好練習一下python。

# array 二維列表

def find(target, array):

#選擇右上角的數字

row = 0

maxrow = len(array) - 1

col = len(array[0]) - 1

while col>=0 and row<= maxrow:

if array[row][col] == target:

return true

elif target > array[row][col]:

row+=1

else :

target < array[row][col]

col-=1

return false

二維有序陣列查詢某值

該類陣列查詢的要點是找到起點,若如上所示是各行各列遞增,那麼可選取右上角頂點為起點,效果為 當搜尋值 稱為num 不等於該頂點值 稱為point 時,搜尋範圍可一致減小 所謂一致減小,就是範圍減小後符合同一規律 在該例中,由於遞增 若 num point,可確定該點所在行均不符合要求,可將該poin...

二維「有序」陣列查詢問題的解決

題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,誒一列都按照從上到下遞增的順序排序,請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否包含了該整數。例如下面的二維陣列就是每行 沒列都遞增排序。如果在這個陣列中查詢數字7,則返回true 找得到 如果查詢數字5,由於陣列不含該...

有序二維陣列的查詢

劍指offer原題,陣列從左到右,從上到下遞增,給定乙個數target找出這個數是否在該有序二維陣列裡面。找到的話返true,否則返回false。題目比較簡單就簡單說說思路,利用二維陣列的特性,我們把陣列看做乙個矩陣,從矩陣的右上角元素a i,j 開始找,如果a i,j target,則target...