Categorygithub.com/blueBlue0102/LeetCode-Goleetcode0033.Search-in-Rotated-Sorted-Array
package
0.0.0-20241125063422-a7e1e0bf04b0
Repository: https://github.com/blueblue0102/leetcode-go.git
Documentation: pkg.go.dev

# README

33. Search in Rotated Sorted Array

https://leetcode.com/problems/search-in-rotated-sorted-array/

[1 2 3 4 5 6 7] 的各種 case 為例

[1 2 3 4 5 6 7]
[7 1 2 3 4 5 6]
[6 7 1 2 3 4 5]
[5 6 7 1 2 3 4]
if nums[mid] < nums[right],表示 mid 的右邊一定都是大於 nums[mid] 的數字
mid 左邊的數字則是混亂的不一定
所以當 target < nums[mid] 時,可以確定要往左邊找
而當 target > nums[mid] 時,可以先判斷 targetnums[right] 的關係
target > nums[right] 則也要往左找,反之則往右找

[4 5 6 7 1 2 3]
[3 4 5 6 7 1 2]
[2 3 4 5 6 7 1]
if nums[mid] > nums[right],表示 mid 的左邊都是小於 nums[mid] 的數字
(因為轉折點在右邊所以才有機會 nums[mid] > nums[right]
mid 右邊的數字則是混亂的不一定
所以當 target > nums[mid] 時,可以確定要往右找
而當 target < nums[mid] 時,可以先判斷 targetnums[left] 的關係
因為想找 < nums[mid] 的值,若 nums[left] > target,則表示左邊的值一定都大於 target,所以要往右找

Takeaway