LeetCode - 33 解題紀錄
題目: LeetCode - 33. Search in Rotated Sorted Array
題目說明
給一個排序過的陣列,但是反轉一部份,給一個 target
求它在陣列中的 index
,若不在陣列中則回傳 - 1。
※ 題目希望時間複雜度為 O(log n)
解題思路
基本為二分搜尋法,但是因為陣列反轉過,所以會有一些其他的規則,舉例子並自己設 target
就能找出其中的規則。
以下是我觀察到的規則:
- 如果
nums[mid] > target
- 如果
nums[0] > nums[mid]
則target
會在左邊這一段。 - 如果
nums[0] < nums[mid]
- 如果
nums[0] > target
則target
會在右邊這一段。 - 如果
nums[0] < target
則target
會在左邊這一段。
- 如果
- 如果
- 如果
nums[mid] < target
- 如果
nums[0] > nums[mid]
- 如果
nums[0] > target
則target
會在右邊這一段。 - 如果
nums[0] < target
則target
會在左邊這一段。
- 如果
- 如果
nums[0] < nums[mid]
則target
會在右邊這一段。
- 如果
參考解法
1 | class Solution { |
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Larry's notes!
評論