思路:
1.先判斷陣列的長度是否為0,1。
2.然後從陣列的頭和尾開始遍歷。先算出他們的中間下標mid,將中間元素rotatearray[mid]和尾元素rotatearray[high]比較大小。若中間元素大於尾元素則最小元素一定在中間元素的右邊即low=mid+1。若中間元素小於尾元素則最小元素要不就是中間元素要麼在中間元素右邊即high=mid。若中間元素和尾元素相等則high=high-1。依次迴圈直到結束。
# -*- coding:utf-8 -*-
class solution:
def minnumberinrotatearray(self, rotatearray):
# write code here
if len(rotatearray)==0:
return 0
if len(rotatearray)==1:
return rotatearray[0]
low,high=0,len(rotatearray)-1
while low<=high:
mid=(low+high)//2
if rotatearray[mid]>rotatearray[high]:
low=mid+1
elif rotatearray[mid]high=mid
else:
high-=1
return rotatearray[high]
劍指Offer 6 旋轉陣列的最小元素
description把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。可以直接binary search,每次mid和r的...
劍指offer(6) 旋轉陣列的最小數字
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。這道題最直觀的解法並不難,從頭到尾遍歷陣列一次,我們就能找出最小的元素。這...
劍指Offer (6)旋轉陣列的最小數字
題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。實現如下 l m r 規律 一般前旋轉區的數大於等於後旋轉區的...