面试150 寻找旋转数组中的最小值
初始设定左右指针 left 和 right,循环条件为 left < right,每次取中点 middle。如果中点值大于右端值,说明最小值一定在右半部分,左指针移动到 middle + 1;否则说明最小值可能在左半部分甚至是 middle 本身,因此右指针移动到 middle。循环结束时,left == right,即为最小值所在的位置。直接return min(nums)即可。
·

思路1
直接return min(nums)即可。
class Solution:
def findMin(self, nums: List[int]) -> int:
return min(nums)
思路2
初始设定左右指针 left 和 right,循环条件为 left < right,每次取中点 middle。如果中点值大于右端值,说明最小值一定在右半部分,左指针移动到 middle + 1;否则说明最小值可能在左半部分甚至是 middle 本身,因此右指针移动到 middle。循环结束时,left == right,即为最小值所在的位置。
class Solution:
def findMin(self, nums: List[int]) -> int:
left=0
right=len(nums)-1
while left<right:
middle=(left+right)//2
if nums[middle]>nums[right]:
left=middle+1
else:
right=middle
return nums[right]
更多推荐

所有评论(0)