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

旋转数组的最小数字

https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param rotateArray int整型一维数组 
# @return int整型
#
class Solution:
    def minNumberInRotateArray(self , rotateArray: List[int]) -> int:
        left = 0
        right = len(rotateArray)-1
        while left < right:
            mid = (left + right) // 2
            if rotateArray[mid] == rotateArray[right]: # 当中间值等于右界值时,删除右界值
                right -= 1
            elif rotateArray[mid] > rotateArray[right]: # 等号不能并在这里,当数组为[10111]时会出错
                left = mid + 1
			# 当中间值小于rotateArray[mid-1],且小于右界值时,rotateArray[mid]为最小,直接输出
            elif rotateArray[mid] < rotateArray[right] and rotateArray[mid] < rotateArray[mid-1]:
                return rotateArray[mid]
            else: # 当中间值小于右界值,大于前一个值时
                right = mid-1
        return rotateArray[left]

全部评论

相关推荐

点赞 评论 收藏
分享
02-16 22:13
门头沟学院 Java
Yki_:女生学成这样挺不错了,现在停止网课,立刻all in八股,从最频繁的开始背,遇到不会的知识点直接问AI,项目也别手敲,直接看技术文档,背别人总结好的面试官可能问的问题的答案,遇到不会的再去代码里找具体实现就可以了,3月份开始边背边投实习约面
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务