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

2021-10-06 20:18:30 字數 849 閱讀 4799

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如,陣列 [3,4,5,1,2] 為 [1,2,3,4,5] 的乙個旋轉,該陣列的最小值為1。

示例 1:

輸入:[3,4,5,1,2]

輸出:1

示例 2:

輸入:[2,2,2,0,1]

輸出:0

注意:本題與主站 154 題相同:

暴力演算法比較容易寫,並且結果一定正確。遍歷陣列,如果碰到後乙個比前乙個小就找到了最小值,注意要預設輸出第乙個元素,覆蓋陣列完全公升序或者只有乙個元素的情況。

時間複雜度 o(n),空間複雜度 o(1)

class solution 

return numbers[0];

}};

執行用時 :12 ms, 在所有 c++ 提交中擊敗了56.30%的使用者

記憶體消耗 :12.1 mb, 在所有 c++ 提交中擊敗了100.00%的使用者

二分法,用二分的思想查詢亂序的地方在**。二分要解決 low、high、mid 的取值,以及每次判定之後如何修改對應的值。另外求 mid 時除以 2 可以用右移一位來完成,比除法效率高。這道題很容易有測試用例不通過,要好好揣摩幾個取值問題。

時間複雜度 o(logn),空間複雜度 o(1)

class

solution

return numbers[l];}

};

執行用時 :8 ms, 在所有 c++ 提交中擊敗了86.24%的使用者

記憶體消耗 :12.1 mb, 在所有 c++ 提交中擊敗了100.00%的使用者

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

完整 位址 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。這道題目相對前面的比較複雜,坑比較多 此時用二分法解決,mi...

劍指Offer面試題11 旋轉陣列的最小數字

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

《劍指offer》面試題11 旋轉陣列的最小數字

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如,陣列為的乙個旋轉,該陣列的最小值為1。分析 我們注意到旋轉之後的陣列實際上可以劃分為兩個排序的子陣列,而且前面子陣列的元素都大於或者等於後面子陣列的元素。和二分查詢...