劍指offer 旋轉陣列的最小數字

2021-08-21 09:51:36 字數 651 閱讀 1049

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。 例如陣列為的乙個旋轉,該陣列的最小值為1。 note:給出的所有元素都大於0,若陣列大小為0,請返回0。

利用二分法的思路查詢,最小值將陣列分割為兩個有序的陣列,設定三個指標left,mid,right,如果a[mid]>a[right],說明最小值在後面一半陣列中,令left=mid+1(不可能是a[mid]);如果a[mid],說明最小值在前面一半陣列中,令right=mid(有可能是a[mid])。當left=right時退出迴圈,此時指向的就是最小值。

這裡是考慮陣列中沒有重複數字的情況。

如果有重複數字,增加乙個判斷,當a[left]==a[right]時,讓left++,跳過重複的數字。

ac**:

class solution 

return rotatearray[left];

}};

如果有重複數字,增加乙個判斷,測試通過

class solution     

while(left < right) //注意結束迴圈條件

return rotatearray[left];

}};

劍指offer 旋轉陣列的最小數

題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。public class test system.out.pr...

劍指offer 旋轉陣列的最小數字

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個排好序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。分析 這道題最直觀的解法並不難。從頭到尾遍歷陣列一次,就能找出最小的元素,時間複雜度顯然是o n 但這個思路沒有利用輸入陣列的特性...

劍指offer 旋轉陣列的最小數字

記錄來自 劍指offer 上的演算法題。題目描述如下 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個選擇,輸出旋轉陣列的最小元素。例如陣列是的乙個旋轉,該陣列的最小值是1。這裡可以採用二分查詢的想法,使用兩個指標,乙個指向第乙個元素,乙個指向末尾元素,...