把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。
輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。
例如陣列為的乙個旋轉,該陣列的最小值為1。
note:給出的所有元素都大於0,若陣列大小為0,請返回0
class
solution
:def
minnumberinrotatearray
(self, rotatearray)
:# write code here
#首先判斷rotatearray是否有元素
iflen
(rotatearray)==0
:return
none
iflen
(rotatearray)==1
:return rotatearray[0]
else
: mm=
min(rotatearray)
#找到rotatearray中的最小值
d=rotatearray.index(mm)
#找到最小值的位置
return rotatearray[d]
#返回最小值
乙個常規的二分查詢法:
def
twosort
(array,key)
: left=
0 right=
len(array)-1
while left<=right:
mid =
(left + right)
>>
1if array[mid]
left=mid+
1elif array[mid]
>key:
right=mid-
1else
:return mid
if __name__ ==
'__main__'
: array=[1
,2,3
,4,5
,6,7
,8] mid=twosort(array,1)
print
(mid)
把二分查詢法的思想應用到這道題上:
class
solution
:def
minnumberinrotatearray
(self, rotatearray)
:# write code here
#二分法
ifnot rotatearray:
return
none
left=
0 right=
len(rotatearray)-1
while left<=right:
mid=
(left+right)
>>
1if rotatearray[mid]
:return rotatearray[mid]
elif rotatearray[mid]
: right=mid-
1else
: left=mid+
1return
0
牛客66道程式設計題 替換空格
class solution s 源字串 defreplacespace self,s write code here return s.replace 20 class solution s 源字串 defreplacespace self,s write code here s list s 把...
牛客66道程式設計題 跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 當只有1個台階時,只有一種跳法,那就是1。當有2個台階時,則有兩種跳法,分別是1 1和2。當有3個台階時,則有3種跳法,分別是1 1 1,1 2和2 1。當有4個台階時,則有5種跳法,...
牛客刷題 找旋轉陣列的最小元素
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。解題思路 1 遍歷一遍陣列,只要遇到後乙個比前乙個小,那麼後乙個 就是最小...