154 尋找旋轉排序陣列中的最小值 II

2021-10-20 18:51:19 字數 1060 閱讀 1039

題目描述

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。

( 例如,陣列[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

說明:題解:

二分。二分不一定必須要有單調性,二分的本質是尋找某種性質的分界點。只要找到某種性質,可以確定目標在區間的前半部分還是後半部分,就可以用二分找到這個分界點。

首先將陣列中的元素畫在二維座標系中,橫座標代表下標,縱座標代表值。

可以看到,虛線左邊元素滿足nums[i] >= nums[0],虛線右邊元素滿足nums[i] <= nums[0],二分時,如果nums[m] == nums[n - 1],此時會有疑問:

也就是說,這個時候根本不知道往哪走?

解決辦法很簡單,將黑色部分刪除,便可以進行二分了。

時間複雜度:o(l

ogn)

o(logn)

o(logn

) ,最壞情況為所有元素都相等為o(n

)o(n)

o(n)

額外空間複雜度:o(1

)o(1)

o(1)

class

solution

return nums[l];}

};/*記憶體:11.8mb,擊敗:96.81%

*/

154 尋找旋轉排序陣列中的最小值 II H

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 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 說明 這道題是 尋找旋轉排序陣...

154尋找旋轉排序陣列中的最小值 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 說明 這道題是 尋找...

154 尋找旋轉排序陣列中的最小值 II

154 尋找旋轉排序陣列中的最小值 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...