旋轉陣列的最小元素

2021-10-07 06:51:22 字數 1078 閱讀 3829

題目描述

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。

輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。

例如陣列為的乙個旋轉,該陣列的最小值為1。

note:給出的所有元素都大於0,若陣列大小為0,請返回0。

# -*- coding:utf-8 -*-

class

solution

:def

minnumberinrotatearray

(self, rotatearray)

:# 時間複雜度 o(n)

num =

0for i in

range

(len

(rotatearray)):

# 5 > 1 返回 1

if num > rotatearray[i]

and num !=0:

return rotatearray[i]

num = rotatearray[i]

class

solution

:def

minnumberinrotatearray

(self, rotatearray)

:# 使用二分查詢發 o(logn)

head =

0 tail =

len(rotatearray)-1

while head <= tail:

middle =

(head + tail)//2

if rotatearray[middle]

< rotatearray[middle-1]

:return rotatearray[middle]

elif rotatearray[middle]

< rotatearray[tail]

: tail = middle -

1else

: head = middle +

1return

0

旋轉陣列的最小元素

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個排好序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。解題 類似二分查詢,使用兩個指標 left right 指向一前一後,一般情況下arr left 一定大於等於arr right ...

旋轉陣列的最小元素

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如有如下陣列 旋轉之後如下 此時需要找出當前旋轉陣列的最小值,由於陣列是遞增的,所以旋轉之後前面的陣列元素會大於後面陣列的元素,也就是陣列大於。因此採用二分查詢的方法找出最小...

旋轉陣列的最小元素

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。其實最開始這道題我看著是懵逼的,這個旋轉陣列是非遞減的陣列,然後給的例子...