思路:
1.先判断数组的长度是否为0,1。
2.然后从数组的头和尾开始遍历。先算出他们的中间下标mid,将中间元素rotateArray[mid]和尾元素rotateArray[high]比较大小。若中间元素大于尾元素则最小元素一定在中间元素的右边即low=mid+1。若中间元素小于尾元素则最小元素要不就是中间元素要么在中间元素右边即high=mid。若中间元素和尾元素相等则high=high-1。依次循环直到结束。
# -*- coding:utf-8 -*-
class Solution:
def minNumberInRotateArray(self, rotateArray):
# write code here
if len(rotateArray)==0:
return 0
if len(rotateArray)==1:
return rotateArray[0]
low,high=0,len(rotateArray)-1
while low<=high:
mid=(low+high)//2
if rotateArray[mid]>rotateArray[high]:
low=mid+1
elif rotateArray[mid]<rotateArray[high]:
high=mid
else:
high-=1
return rotateArray[high]