题解 | #旋转数组的最小数字#
旋转数组的最小数字
http://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba
递归方法
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param rotateArray int整型一维数组
# @return int整型
#
class Solution:
def minNumberInRotateArray(self , rotateArray: List[int]) -> int:
length = len(rotateArray)
middle = (length-1)//2
print(length-1)
end_num = rotateArray[-1]
如果只剩一个元素,那么它就是最小的
if middle == length-1:
return rotateArray[middle]
如果中间元素大于最右侧元素,从middle+1往后作为新数组
if rotateArray[middle] > end_num:
return self.minNumberInRotateArray(rotateArray[middle+1:])
#如果中间元素小于最右侧元素,从middle及往前作为新数组
elif rotateArray[middle] < end_num:
return self.minNumberInRotateArray(rotateArray[:middle+1])
#如果中间元素与最右侧相等,则不能判断最小元素在中间元素的左侧还是右侧,数组往前缩一个
else:
return self.minNumberInRotateArray(rotateArray[:-1])