一道面試真題 尋找旋轉排序陣列中的最小值

2021-10-10 03:05:47 字數 771 閱讀 9861

假設乙個排好序的陣列在其某一未知點發生了旋轉(比如 0 1 2 4 5 6 7 可能變成 4 5 6 7 0 1 2 )。你需要找到其中最小的元素。

樣例 1:

輸入:[4, 5, 6, 7, 0, 1, 2]

輸出:0

解釋:陣列中的最小值為 0

複製**

樣例 2:

輸入:[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 說明 這道題是 尋找旋轉排序陣...