LeetCode第153题-寻找旋转排序数组中的最小值-python实现-图解思路与手撕代码
文章目录
一、题目描述
二、解题思路与代码实现
1.解题思路
根据时间复杂度O(log n),知道要用二分法。
最后一个数要么是最小值,要么在最小值右侧,可以用来和其他数对比。
如果大于最后一个值,那最小值肯定在右侧,
如果小于最后一个值,那最小值肯定在左侧。
2.代码实现
代码如下(示例):
class Solution:
def findMin(self, nums: List[int]) -> int:
n=len(nums)
# 最后一个数要么是最小值,要么在最小值右侧,可以用来和其他数对比
l,r=-1,n-1
while l+1<r:
mid=(l+r)//2
if nums[mid]<nums[-1]:r=mid
else:l=mid
return nums[r]
总结
这道题需要拿二分法的中间值和最后一个值作对比,这一点比较难想到。