热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【力扣日记】154寻找旋转排序数组的最小值II|二分查找

题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。(例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。请找出其中最小的元
题目描述

假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
请找出其中最小的元素。

注意数组中可能存在重复的元素

算法思路

框架见:153 寻找旋转排序数组

考虑可能存在重复元素:
当nuns[mid]=nums[r]时,r-1

class Solution:def findMin(self, nums: List[int]) -> int:l,r&#61;0,len(nums)-1while l<r:mid&#61;(l&#43;r)//2if nums[mid]>nums[r]:l&#61;mid&#43;1elif nums[mid]<nums[r]:r&#61;midelse:r-&#61;1return nums[l]

if nums[mid]<nums[mid-1]:return nums[mid]
# 循环里添加这个判断在大数据数组里应该是可以提高速度的。

执行用时 :56 ms, 在所有 Python3 提交中击败了84.78%的用户
内存消耗 :13.8 MB, 在所有 Python3 提交中击败了35.51%的用户


推荐阅读
author-avatar
楼_市早班车_954
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有