Leetcode刷题记录——剑指 Offer 11. 旋转数组的最小数字

在这里插入代码片在这里插入图片描述

class Solution:
    def minArray(self, numbers: List[int]) -> int:
        low, high = 0, len(numbers) - 1
        #要找最小的 也就是最后一个最大值的后面那个值
        while low < high:
            pivot = low + (high - low) // 2
            if numbers[pivot] < numbers[high]:#中间小于后面,说明中点到end 的半段是上升的,而end及其之前才有可能是结果
                high = pivot 
            elif numbers[pivot] > numbers[high]:#中间大于后面 说明最小值在后半段
                low = pivot + 1
            else:#中间的等于后面 说明后半段是全等的  于是将high左移一位
                high -= 1
        return numbers[low]

猜你喜欢

转载自blog.csdn.net/weixin_41545780/article/details/107571862