在这里插入代码片
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]