Medium
Search in Rotated Array
👶 The 5-Year-Old Summary
A sorted array was "rotated" (like picking up pages and dropping them back). Find a number quickly! Like finding a page in a book someone shuffled!
🎮 Interactive Visualizer
Array: [4,5,6,7,0,1,2], Target: 0
Search Range:
🧠 The Brain Hack
Find which half is sorted, then check if target is in that half! mid splits the array into two sorted halves - figure out which one!
💻 The Clean Solution
def search(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
# Left half is sorted
if nums[left] <= nums[mid]:
if nums[left] <= target < nums[mid]:
right = mid - 1
else:
left = mid + 1
# Right half is sorted
else:
if nums[mid] < target <= nums[right]:
left = mid + 1
else:
right = mid - 1
return -1
# [4,5,6,7,0,1,2], target = 0 → returns 4
Time: O(log n)
Space: O(1)