劍指offer 面試題8 旋轉陣列的最小數字

2021-08-07 17:40:30 字數 707 閱讀 9142

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

解法一:從頭到尾將陣列遍歷一次,找到最小的元素。時間複雜度o(n)

解法二:二分查詢。最小的元素是前後兩個有序子陣列的分界線。注:需要考慮特殊情況,即陣列兩邊都一樣大。

**如下:

#includeusing namespace std;

int binarysearch(int a, int start, int end)

int mid=(start+end)/2;

if(a[start]==a[end] && a[mid]==a[end]) //特殊情況:兩邊都一樣大,兩邊均遍歷

else if(a[mid]>=a[start] && a[mid]>a[end])

binarysearch(a,mid,end);

else

binarysearch(a,start,mid);

}int main()

{ int n,min=1000001;

int a[10000];

cin>>n;

for(int i=0;i>a[i];

cout<

劍指offer 面試題8 輸出旋轉陣列最小值

include using namespace std int min int arr,int len return arr q int main int m min arr,6 cout 這種 只能處理常規情況,如果陣列旋轉值為0,即陣列還是乙個遞增陣列,p q mid,陷入死迴圈。如果中間值跟兩...

劍指offer 面試題8 旋轉陣列的最小值

package chapter2 面試題8 旋轉陣列的最小值 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。public class 08 rotatearray int arr...

劍指offer 面試題8 旋轉陣列的最小數值

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