6 旋轉陣列的最小數字

2021-10-02 12:43:06 字數 847 閱讀 4026

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

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

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

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

分析題目所給的旋轉陣列。

這道題要考慮,若mid處與left、right處的值都相同,則不能使用二分,因為你沒法確定選擇哪個區間,所以只能遍歷查詢。

計算mid,如果mid處大於left處,則說明mid前是有序的,最小值肯定不在mid前面,所以更新left = mid。

如果mid處小於left處,則說明mid後面是有序的,最小值肯定不在mid後面,所以更新right = mid。

如果mid處等於left處。因為我們已經考慮了1給定的情況,所以mid處肯定不等於right處。即使left處是我們要找的最小值,我們也可以大膽的更新left = mid, 因為mid處的值和原left出的值相等。

通過2、3、4的更新法則,最終我們能找到兩個數,比如5、1。此時left指向5,right指向1。我們的迴圈條件可以設定為right-left>1,意味停止時right = left + 1。

最後返回right處的值即為最小值。

class

solution

while

( right - left >1)

return rotatearray[right];}

};

if ( rotatearray[mid] >= rotatearray[left] ),昨天腦子漿糊,這個等號的錯誤沒找到,浪費大量時間。可以寫個數比如554來想一下。

6 旋轉陣列 的最小數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。演算法 逐個遍歷,時間複雜度為o n 空間複雜度為o 1 class so...

6 旋轉陣列的最小數字

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。解法1 開始沒有get到這個題目的點,個人感覺旋轉後,遍歷到第乙個...

6 旋轉陣列的最小數字

考察 查詢和排序 1 題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列 後面數大於或者等於前面的數 的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。2 思路1 陣列...