题目描述
假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
请找出其中最小的元素。
注意数组中可能存在重复的元素。
算法思路
框架见:153 寻找旋转排序数组
考虑可能存在重复元素:
当nuns[mid]=nums[r]时,r-1
class Solution:def findMin(self, nums: List[int]) -> int:l,r&#61;0,len(nums)-1while l<r:mid&#61;(l&#43;r)//2if nums[mid]>nums[r]:l&#61;mid&#43;1elif nums[mid]<nums[r]:r&#61;midelse:r-&#61;1return nums[l]
if nums[mid]<nums[mid-1]:return nums[mid]
执行用时 :56 ms, 在所有 Python3 提交中击败了84.78%的用户
内存消耗 :13.8 MB, 在所有 Python3 提交中击败了35.51%的用户