Skip to main content

153. Find Minimum in Rotated Sorted Array

https://leetcode.com/problems/find-minimum-in-rotated-sorted-array

Python

class Solution:
def findMin(self, nums: List[int]) -> int:
if len(nums) < 2:
return nums[0]
left, right = 0, len(nums)-1

if nums[right] > nums[0]:
return nums[0]

while left <= right:
pivot = (left+right) >> 1

# 滿足條件有兩個
# Case1: pivot目前在最大值
if nums[pivot] > nums[pivot+1]:
return nums[pivot+1]
# Case2: pivot目前就是最小值
if nums[pivot-1] > nums[pivot]:
return nums[pivot]

if nums[pivot] > nums[0]:
left = pivot + 1
else:
right = pivot - 1