leetcode 154 Find Minimum in Rotated Sorted Array II() python3 最简二分法(如何处理重复的数字)

class Solution:
    def findMin(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        # method one
        # return min(nums)



        # method two  二分法难点,在于左右节点和中间结点一样的时候,不知道最小值的区间
        left , right = 0 , len(nums)-1
        while left < right:
            mid = left + (right - left) // 2
            if nums[mid] == nums[right]:              # 关键的去重,不能每次舍弃一半的元素,而只能逐个筛选
                right -= 1
            elif nums[mid] < nums[right]:
                right = mid
            else:
                left = mid + 1
        return nums[left]

猜你喜欢

转载自blog.csdn.net/huhehaotechangsha/article/details/80542133