Explain modified binary search.
Skip to solutionKEEP THE
mediumDSA
How do you search in a rotated sorted array?
891 views
01
Understand the problem
binary-searcharrays
02
Attempt it yourself
Sketch your approach before reading the solution — that's what interviews test.
Nudge consolestandby
Stuck? Beam a request up — the console returns a conceptual nudge that guides your logic without spoiling the implementation.
03
Study the solution
Run binary search, but at each step decide which half is sorted by comparing nums[mid] to the ends. If the target lies within the sorted half's range, search there; otherwise search the other half. Still O(log n) despite the rotation.
Solution ready — 2 min read
Classified // press E to declassify
04
Read the code
Binary search on a rotated array
Run Playgrounddef search(nums, target):
lo, hi = 0, len(nums) - 1
while lo <= hi:
mid = (lo + hi) // 2
if nums[mid] == target:
return mid
if nums[lo] <= nums[mid]: # left half sorted
if nums[lo] <= target < nums[mid]:
hi = mid - 1
else:
lo = mid + 1
else: # right half sorted
if nums[mid] < target <= nums[hi]:
lo = mid + 1
else:
hi = mid - 1
return -1
# --- demo ---
print(search([4, 5, 6, 7, 0, 1, 2], 0)) # 4
print(search([4, 5, 6, 7, 0, 1, 2], 3)) # -105
Join the discussion
Discussion (0)
Sign in to join the discussion.
No responses yet. Be the first to share what you think.
Transmission complete // awaiting log
KEEP THE
STREAK ALIVE.
Dossier 41 of 127 decoded in the Data Structures & Algorithms track. One more won't hurt.