劍指offer第十一題 旋轉陣列的最小數字

2021-08-20 21:41:32 字數 1278 閱讀 6960

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。 例如陣列為的乙個旋轉,該陣列的最小值為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-*-

classsolution:

def minnumberinrotatearray(self, rotatearray):

# write code here

returnmin(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...