劍指offer 3 Python實現二維陣列的查詢

2021-08-07 20:27:13 字數 876 閱讀 6487

一、題目如下:

二、解答思路:

從二維陣列的右上角的元素開始判斷,因為此元素是它所在行的最大數,是它所在的列的最小數。如果它等於要查詢的數字,則查詢過程結束。如果它大於要查詢的數字,則可以排除它所在的列。如果它小於要查詢的數字,則可排除它所在的行。這樣如果要查詢的數字不在陣列的右上角,則每次判斷都可以排除一行或一列以縮小查詢範圍,直到找到要查詢的數字,或者查詢範圍為空。

下圖是查詢數字7的步驟:

三、python**

def

find

(array,num):

row = 0

col = len(array[0])-1

if array == none:

return

false

while rowand col >=0:

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

return

true

elif array[row][col] > num:

col -=1

else:

row +=1

return

false

m = [[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

print find(m,2)

輸出:

true

劍指Offer 陣列 (3)

知識點 資料結構 陣列 題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。1 自己寫的 借助了其他的記憶體空間 奇數和奇數 偶數和偶數相對位置不變 指的是奇數之間的先後順序...

劍指offer 陣列的旋轉(1)Python實現

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。考點 二分查詢 鏈結 一 鏈結二。分析 旋轉之後的陣列實際上可以劃分...

劍指offer 斐波那契數列 python 實現

題目描述 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 判斷n是否為0,1,2,對應特殊值 否則返回第n項的結果。注 迴圈可通過,但遞迴不行。coding utf 8 class solution def fibonacci self,...