旋轉陣列的最小數字

2022-08-20 17:39:07 字數 1594 閱讀 3377

時間限制:1 秒記憶體限制:32 兆特殊判題:

題目描述:把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。 

輸入:輸入可能包含多個測試樣例,對於每個測試案例,

輸入的第一行為乙個整數n(1<= n<=1000000):代表旋轉陣列的元素個數。

輸入的第二行包括n個整數,其中每個整數a的範圍是(1<=a<=10000000)。 

輸出:對應每個測試案例,

輸出旋轉陣列中最小的元素。 

樣例輸入:

5

3 4 5 1 2

樣例輸出:

1
題目貌似見過。馬上下筆,但還是經過十幾二十分鐘的分析各種情況。洋洋灑灑十幾二十行**。vc上各種調,都是小問題。ctrl+c加ctrl+v,結果acm系統報time limit exceeded,悶~ accept 3道,兩個tle,所以我認為我的code有死迴圈或是演算法問題等;然後,網上各種找,基本思想都是如此。各種除錯別人的還是乙個樣,汗~

1 #include 2

using

namespace

std;34

int func15(int a, intn)5

19if (a[min]>a[j])

2023

else

2427}28

29return a[i]a[i]: a[j];30}

31int

main()

3244

45 cout

46delete arr;

47 }

結果終於在網上找到了答案。

1 #include 2 #include 3 #include 4

//為什麼logn的複雜度過不去,n的複雜度卻能過去啊???????神馬情況!

5using

namespace

std;67

intmain()

820 cout << min <

21free(a);22}

23return0;

24 }

結果o(n)的演算法居然過了!!居然過了。。然過了。。過了。。了。。。

我的想法是可能我的演算法存在在死迴圈。但看了分析結果的圖。。

以上是o(n)的演算法,以下是o(logn)演算法

要是死迴圈就不會有123的通過,所以。。。。

好吧,你贏。。。

旋轉陣列最小數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列 為的乙個旋轉,該陣列的最小值為1。code int min int numbers,int length int low 0 int high length 1 in...

旋轉陣列最小數字

旋轉陣列最小數字 劍指offer 二分查詢 題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。解題思路 題目要求找到最小元素,第一反應是排序,但陣列基本有序直接排序浪費效能。結合資料的特點前半部分遞增,後半部分遞減,...

旋轉陣列的最小數字

1.問題描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出該旋轉陣列的最小元素。例如陣列 3,4,5,1,2 為 1,2,3,4,5 的乙個旋轉,該陣列的最小值為1.來自 劍指offer 2.分析 首先我們可以看到原陣列為遞增排序的,並且以...