題目:把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。 例如陣列為的乙個旋轉,該陣列的最小值為1。 note:給出的所有元素都大於0,若陣列大小為0,請返回0
我的**:
class solution
}return temp;
}};
分析:顯然,這一題利用直觀的解法,挺簡單,時間複雜度為 o(n),可是還是《劍指offer》厲害,還有乙個o(log n)的解法
o(log n)的解法:
旋轉之後的陣列,實際上可以劃分為兩個排序的子陣列,而且前面的子陣列元素都大於或者等於後面子陣列的元素。我們還注意到,最小的元素,恰好是這兩個子陣列的分界線。在排序的陣列中,可以利用二分查詢法實現 o(log n)的查詢。牽扯到排序,等過一段時間再系統整理
劍指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。輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000000 代表旋轉陣列的元素個數。...