【剑指offer】旋转数组求最小值-python实现
旋转数组的最小数字
http://www.nowcoder.com/questionTerminal/9f3231a991af4f55b95579b44b7a01ba
思路:
非递减数组进行旋转,采用变形的二分法,通过判断训练处于递增或是递减序列,看寻找最小值。分为三种情况:
当low<high时,直接返回index为low的数组值
1.处于递增:low上移;
2.处于递减:high下移;
3.不增不减,low++进行范围缩小
代码:
# -*- coding:utf-8 -*-
class Solution:
def minNumberInRotateArray(self, rotateArray):
# write code here
if len(rotateArray)==0:
return 0
low=0
high=len(rotateArray)-1
mid=0
while low<high:
mid=low+(high-low)/2
if rotateArray[low]<rotateArray[high]:
return rotateArray[low]
elif rotateArray[mid]>rotateArray[low]:
low+=1
elif rotateArray[high]>rotateArray[mid]:
high=mid
else:
low+=1
return rotateArray[low]
查看14道真题和解析
