题解 | #旋转数组的最小数字#

旋转数组的最小数字

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])
全部评论

相关推荐

11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务