Skip to main content

154. Find Minimum in Rotated Sorted Array II - LeetCode

class Solution:
def findMin(self, nums: list[int]) -> int:
"""
check: nums[m] > nums[-1]
????????F
return first `F`
"""

l = 0 # first `?`
r = len(nums) - 1 # first `F`

# edge case: `remove duplicates` from start ([FFF]?????F)
while l != r and nums[l] == nums[r]:
l += 1

# stop: TTT[F]FFF
while l < r:
m = (l + r) // 2
if nums[m] > nums[-1]:
l = m + 1
else:
r = m
return nums[r]