把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。 例如陣列為的乙個旋轉,該陣列的最小值為1。 note:給出的所有元素都大於0,若陣列大小為0,請返回0。
# -*- coding:utf-8 -*-考察二分查詢法,物件有不同。classsolution:
defminnumberinrotatearray(self
, rotatearray):
# write code here
start=0
end=len(rotatearray)-1
mid=int((start+end)/2)
iflen(rotatearray)==2:
ifrotatearray[1]0]:
returnrotatearray[1]
else:
returnrotatearray[0]
elifrotatearray[mid]>rotatearray[end]:
returnself.minnumberinrotatearray(rotatearray[mid:end+1])
elifrotatearray[mid]returnself.minnumberinrotatearray(rotatearray[start:mid+1])
注意,python的切片的[start:end],其中end切到end-1.(也就是想要結尾x的話,取x的序號+1)
此外也可以使用min函式求解:
# -*- coding:utf-
8
-*-
class
solution:
def minnumberinrotatearray(self, rotatearray):
# write code here
return
min(rotatearray)
劍指offer第十一題 旋轉陣列的最小數字
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如,陣列 3,4,5,1,2 為 1,2,3,4,5 的乙個旋轉,該陣列的最小值為1。示例 1 輸入 3,4,5,1,2 輸出 1 示例 2 輸入 2,2,2,0,1 輸出 ...
11 劍指offer第十一題(python)
問題 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。coding utf 8 class solution def numberof1 self,n write code here count 0 if n 0 n n 0xffffffff while n count 1 n n...
Python劍指offer 旋轉陣列的最小數字
由旋轉陣列的定義可以知道,最小數字既要小於左邊的數又要小於右邊的數 另外因為陣列是非減排序的,所以陣列的原始狀態下一定是右邊的數大於中間的數大於左邊的數。利用二分查詢的思想,要想找到這個最小數說明順序陣列其中某個地方有個斷崖,所以旋轉陣列的最小數說明它是小於左邊的數的第乙個,也就是如果 rotate...