面試題11 旋轉陣列的最小數字

2021-10-04 10:36:10 字數 1087 閱讀 9377

"""

title:面試題11. 旋轉陣列的最小數字

intorduce:

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如,陣列 [3,4,5,1,2] 為 [1,2,3,4,5] 的乙個旋轉,該陣列的最小值為1。  

示例 1:

輸入:[3,4,5,1,2]

輸出:1

示例 2:

輸入:[2,2,2,0,1]

輸出:0

注意:本題與主站 154 題相同:

"""from typing import list

"""class solution:

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

min = numbers[0]

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

if numbers[i] < min:

return numbers[i]

return min

"""class solution:

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

left, right = 0, len(numbers) - 1

while left < right and numbers[left] >= numbers[right]:

mid = (left + right) // 2

if numbers[mid] < numbers[right]:

right = mid

elif numbers[mid] > numbers[right]:

left = mid + 1

else:

left = left + 1

return numbers[left]

if __name__ == "__main__":

a = [3, 4, 5, 1, 2]

x = solution()

print(x.minarray(a))

面試題11 旋轉陣列的最小數字

題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。解題思路 輸入的陣列為非減排序陣列的旋轉,陣列分為兩個排好序的陣...

面試題11 旋轉陣列的最小數字

題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。類似二分查詢,旋轉陣列由兩個有序陣列組成 class solut...

面試題11 旋轉陣列的最小數字

把乙個陣列最開始若干個元素搬到陣列的末尾 一般方法遍歷,o n 將這個陣列看作是兩個排序陣列 利用二分查詢的思想,比較中間的數字與兩頭 如果中間元素位於第乙個遞增陣列,大於 等於第乙個指標,範圍 右邊 如果中間元素位於後面遞增陣列,它應該小於 等於第二個指標 左邊 注意改變後指向中間元素 最後結果是...