🎢 ELI5 Park / Binary Search / Search in Rotated Array
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)