旋轉排序數組系列

Leetcode 33. 搜索旋轉排序數組

題目描述
實現

Leetcode 81. 搜索旋轉排序數組 II

題目描述
實現

Leetcode 153. 尋找旋轉排序數組中的最小值

題目描述
實現

Leetcode 154. 尋找旋轉排序數組中的最小值 II

題目描述
實現

總結

在旋轉排序數組中進行二分查找時,無論是搜索特定值,還是搜索最小值,都需要 在左右兩個區間裏,找到 連續遞增 的那個區間

判斷區間是否「連續遞增」,只需比較區間邊界值: 如果 nums[left] <= nums[mid],則區間 [left,mid] 連續遞增;反之,區間 [mid,right] 連續遞增。但是上述判斷僅適用於數組中不含重複元素的情況,如果數組中包含重複元素,那麼在 nums[left]==nums[mid] 時將退化爲線性查找。

找到「連續遞增」的區間後,問題就變得簡單了許多:

  • 33 題,查找特定值:只需要 判斷目標值在「連續遞增」區間內還是區間外。比如當區間 [left,mid] 連續遞增時,若目標值位於該區間內,則 right = mid-1;若目標值位於該區間外,則 left = mid+1。如果是區間 [mid,right] 連續遞增,也可以用類似的方法收縮區間
  • 153 題,查找最小值:只需要排除左側或者右側的一段「連續區間」,使得 [left,right] 不連續,就可以找到最小值

上面一段總結完全源自 【LeetCode】33~154. 4 道「搜索旋轉排序數組」題,侵權刪。

參考文獻

[1] 【LeetCode】33~154. 4 道「搜索旋轉排序數組」題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章