假設乙個排好序的陣列在其某一未知點發生了旋轉(比如 0 1 2 4 5 6 7 可能變成 4 5 6 7 0 1 2 )。你需要找到其中最小的元素。樣例 1:
樣例 2:輸入:[4, 5, 6, 7, 0, 1, 2]
輸出:0
解釋:陣列中的最小值為 0
複製**
輸入:[2,1]
輸出:1
解釋:陣列中的最小值為 1
複製**
第二次分類討論:比較 nums[left]和 nums[mid],其中 mid 是二分中點。
直到 left == right 時,此時指向的就是最小值,return nums[left]。
有興趣可以證明一下。**如何實現,看個人的 preference 啦。
public class solution
int mid = left + (right - left) / 2;
// 最小值在[left, mid]
if (nums[left] > nums[mid])
// 最小值在(mid, right]
else
}return nums[left];}}
面試中的一道排序題演算法
每年十一月各大it公司都不約而同 爭后恐後地到各大高校進行全國巡迴招聘。與此同時,網上也開始出現大量筆試面試題 網上流傳的題目往往都很精巧,既能讓考查基礎知識,又在平淡中隱含了廣闊的天地供優秀學生馳騁。這兩天在網上淘到一道筆試題目 注1 雖然真假未知,但的確是道好題,題目如下 從10億個浮點數中找出...
LintCode 尋找旋轉排序陣列中的最小值
1 尋找旋轉排序陣列中的最小值 假設乙個旋轉排序的陣列其起始位置是未知的 比如0 1 2 4 5 6 7 可能變成是4 5 6 7 0 1 2 你需要找到其中最小的元素。你可以假設陣列中不存在重複的元素。樣例 給出 4,5,6,7,0,1,2 返回 0 solution 本題可以直接使用蠻力法計算複...
LeetCode 尋找旋轉排序陣列中的最小值II
假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 請找出其中最小的元素。注意陣列中可能存在重複的元素。示例 1 輸入 1,3,5 輸出 1 示例 2 輸入 2,2,2,0,1 輸出 0 說明 這道題是 尋找旋轉排序陣...