题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
# -*- coding:utf-8 -*-
class Solution:
def minNumberInRotateArray(self, rotatearray):
# write code here
"""运行时间:772ms,占用内存:5992k
if len(rotateArray) == 0:
return 0
rotateArray.sort()
return rotateArray[0]
"""
'''方法二:二分查找法,思路适用于c++,运行时间:688ms,占用内存:5856k'''
temp_left = 0
temp_right = len(rotatearray)-1
temp_mid = (temp_right+temp_left) // 2
while temp_mid != temp_left and temp_mid != temp_right:
if rotatearray[temp_mid] < rotatearray[temp_right]:
temp_right = temp_mid
temp_mid = (temp_right + temp_left) // 2
else:
temp_left = temp_mid
temp_mid = (temp_right + temp_left) // 2
return min(rotatearray[temp_left], rotatearray[temp_right])
'''