Skip to content
MediumBinary SearchAI interview only

Search in Rotated Sorted Array

Asked atgoogleamazonmetamicrosoftbloomberguberlinkedin

01 · Problem

There is an integer array nums sorted in ascending order (with distinct values). Prior to being passed to your function, nums is possibly rotated at an unknown pivot index k (1 <= k < nums.length) such that the resulting array is [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]] (0-indexed).

For example, [0,1,2,4,5,6,7] might be rotated at pivot index 3 and become [4,5,6,7,0,1,2].

Given the array nums after the possible rotation and an integer target, return the index of target if it is in nums, or -1 if it is not in nums.

You must write an algorithm with O(log n) runtime complexity.

02 · Examples

Example 01
Input
nums = [4,5,6,7,0,1,2], target = 0
Output
4

0 is found at index 4.

Example 02
Input
nums = [4,5,6,7,0,1,2], target = 3
Output
-1

3 is not in the array, so return -1.

Example 03
Input
nums = [1], target = 0
Output
-1

0 is not in the array.

03 · Constraints

  • 011 <= nums.length <= 5000
  • 02-104 <= nums[i] <= 104
  • 03All values of nums are unique.
  • 04nums is an ascending array that is possibly rotated.
  • 05-104 <= target <= 104

04 · Optimal complexity

Time
O(log n)
Space
O(1)
05 · Two ways to work on it

Practice it alone or rehearse it as an interview.

Practice Mode gives you an editor and test runs, nothing else. AI Interview Mode puts a voice interviewer on the other side, adds a clock, and ends with a scored summary of the round.