# -*- coding:utf-8 -*-
class Solution:
def minNumberInRotateArray(self, rotateArray):
# write code here
for i in range(len(rotateArray)):
if rotateArray[i+1] < rotateArray[i]:
return rotateArray[i+1]
return 0
代码实现第二种方法:
# -*- coding:utf-8 -*-
class Solution:
def minNumberInRotateArray(self, rotateArray):
# write code here
return min(rotateArray)
代码实现第三种方法:
# -*- coding:utf-8 -*-
class Solution:
def minNumberInRotateArray(self, rotateArray):
# write code here
if not rotateArray:
return 0
#输入的是一个非减序的数组 所以数组长度为2是第二个数字为最小返回
if len(rotateArray)==2:
return rotateArray[1]
mid = int(len(rotateArray)/2)
#输入的是一个非减序的数组 中间那个数大于第一个数的时候 最小值在中间数的右边
if rotateArray[mid] > rotateArray[0]:
return self.minNumberInRotateArray(rotateArray[mid:])
elif rotateArray[mid] < rotateArray[0]:
return self.minNumberInRotateArray(rotateArray[:mid+1])
#当mid处的值等于数组头部的值时,无法判断最小值位于mid左侧还是右侧,此时只能采取遍历的方式。
else:
for i in range(1,len(rotateArray)):
if rotateArray[i] < rotateArray[0]:
return rotateArray[i]
return rotateArray[0]