DSA Patterns (Multi-Lang)•Part 6: Binary Search & Search on Answer (46 - 52)
Find Minimum in Rotated Sorted Array.
In Simple Words:
Compare nums[mid] against nums[r].
If nums[mid] > nums[r], minimum must be in right half: l = mid + 1.
Else minimum is at or left of mid: r = mid. Loop terminates with nums[l].
- Time: $O(\log N)$ | Space: $O(1)$
Multi-Language SolutionsPython 3 • JavaScript • TypeScript • Java • C++
Switch tabs or choose Alldef findMin(nums: list[int]) -> int:
l, r = 0, len(nums) - 1
while l < r:
mid = l + (r - l) // 2
if nums[mid] > nums[r]:
l = mid + 1
else:
r = mid
return nums[l]