LeetCode 33: Search In Rotated Sorted Array — Step-by-Step Visual Trace


Medium — Binary Search | Array | Divide and Conquer

The Problem

Find the index of a target value in a rotated sorted array, where a sorted array has been rotated at some pivot point. Return -1 if the target is not found.

Approach

Use modified binary search by determining which half of the array is properly sorted at each step. Compare the target with the sorted half’s bounds to decide whether to search left or right. This maintains O(log n) complexity despite the rotation.

Time: O(log n) · Space: O(1)

Code

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        left, right = 0, len(nums) - 1

        while left <= right:
            mid = left + (right - left) // 2

            if nums[mid] == target:
                return mid

            if nums[left] <= nums[mid]:
                if nums[left] <= target < nums[mid]:
                    right = mid - 1
                else:
                    left = mid + 1
            else:
                if nums[mid] < target <= nums[right]:
                    left = mid + 1
                else:
                    right = mid - 1

        return -1

Watch It Run

Try it yourself: Open TraceLit and step through every line.


Built with TraceLit — the visual algorithm tracer for LeetCode practice.


Comments