寻找旋转排序数组中的最小值Ⅱ
题目要求
解题思路
二分法
当遇到两个left、right两个位置值相同时候,可以选择将 right = right-1
代码
class Solution:
def findMin(self, nums: List[int]) -> int:
left,right=0,len(nums)-1
while left<right:
mid=(left+right)//2
if nums[mid]>nums[right]: left = mid+1
elif nums[mid]<nums[left]: right = mid
else: right = right -1
return nums[left]
复杂度分析
时间复杂度:
O
(
l
o
g
N
)
O(log N)
O(logN)
空间复杂度:
O
(
1
)
O(1)
O(1)