時間限制: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結果o(n)的演算法居然過了!!居然過了。。然過了。。過了。。了。。。//為什麼logn的複雜度過不去,n的複雜度卻能過去啊???????神馬情況!
5using
namespace
std;67
intmain()
820 cout << min <
21free(a);22}
23return0;
24 }
我的想法是可能我的演算法存在在死迴圈。但看了分析結果的圖。。
以上是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.分析 首先我們可以看到原陣列為遞增排序的,並且以...