Reviewed by Aditya Kumar · Last reviewed 2026-03-24
**Modified Binary Search:** [4,5,6,7,0,1,2]. Compare mid with left/right to find sorted half; recurse in that half if target in range, else other half. O(log n). **With Duplicates:** Worst case O(n)—can't always know which half....
Modified Binary Search: [4,5,6,7,0,1,2]. Compare mid with left/right to find sorted half; recurse in that half if target in range, else other half. O(log n).
With Duplicates: Worst case O(n)—can't always know which half. May need linear scan.
def search_rotated(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]:
if nums[lo] <= target < nums[mid]: hi = mid-1
else: lo = mid+1
else:
if nums[mid] < target <= nums[hi]: lo = mid+1
else: hi = mid-1
return -1
Red Flag: Not handling duplicates (breaks log n). Pro-Move: 'We use for circular buffer lookup—rotate offset + binary search.'
According to DataEngPrep.tech, this is one of the most frequently asked Python/Coding interview questions, reported at 1 company. DataEngPrep.tech maintains an editor-reviewed database of 1,863 data engineering interview questions across 7 categories.