劍指offer 11 旋轉陣列的最小數字

2022-08-09 20:30:19 字數 1127 閱讀 8873

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。

輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。

例如陣列為的乙個旋轉,該陣列的最小值為1。

note:給出的所有元素都大於0,若陣列大小為0,請返回0。

1.從題目看就是乙個有序陣列分成ab,旋轉後變為ba,找出a的第乙個數值。for迴圈o(n)可以直接查,或者直接返回min

2.陣列的查詢優先使用二分法查詢,定義mid,

mid若是大於high,則說明min現在在b裡,low往右變為mid+1,至少是mid加一,因為現在mid還在b裡;

mid若是小於high,則說明mid現在就在a裡了,high往左移變為mid,不用減一,萬一就是min了呢

mid若是等於high,無法判斷mid在**,(3 2 2 2)但因為是非遞減排序,執行high--

不斷縮小範圍後,low為現在最小的元素

1.

class

solution:

def minarray(self, numbers: list[int]) ->int:

if len(numbers) ==0:

return

0

#return min(numbers)

for i in range(len(numbers)-1):

if(numbers[i]>numbers[i+1]):

return numbers[i+1]

return numbers[0]

2.

class

solution:

def minarray(self, numbers: list[int]) ->int:

if len(numbers) ==0:

return

0 i, j = 0, len(numbers) - 1

while i m = (i + j) // 2

if numbers[m] >numbers[j]:

i = m + 1

elif numbers[m] j =m

else

: j -= 1

return numbers[i]

劍指offer 11旋轉陣列中最小的數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。第一種方法 從頭開始遍歷,當遇到不滿足非遞減排序規律的那個數時,那就是旋...

劍指offer11 旋轉陣列的最小數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個公升序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。陣列可能包含重複項。注意 陣列內所含元素非負,若陣列大小為0,請返回 1。樣例 輸入 nums 2,2,2,0,1 輸出 0思路 首先判...

劍指Offer 11 旋轉陣列的最小數字

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序陣列的乙個旋轉,輸出旋轉陣列的最小元素,例如,陣列為的乙個旋轉,該陣列的最小值為1.思路 設定兩個指標。利用二分查詢法。第乙個指標指向第乙個元素,第二個指向最後乙個元素。找到陣列的中間元素,如果中間的元素大於第乙...