本文共 696 字,大约阅读时间需要 2 分钟。
题目中给出我们两个关键点,其一:这是个一升序数组,其二被一个pivot旋转了一下。
旋转过后的数组具有一下特点: 1. 以这个pivot为中心(这个中心就是我们要求的最小值) 2. 数组分为两部分,前半部分递增,后半部分也递增 3. 如果是旋转的,nums[0] > nums[-1]
一般见到有序的,就选择二分查找来做,都是变体。
class Solution(object): def findMin(self, nums): """ :type nums: List[int] :rtype: int """ # 判断是否有旋转 if len(nums) == 1 or nums[0] < nums[-1]: return nums[0] minD = nums[0] length = len(nums) left,right = 0,length-1 while left <= right: mid = (left+right) // 2 if nums[mid] >= minD: left = mid + 1 else: minD = nums[mid] right = mid return minD