python 数组中取出最小值_yiduobo的每日leetcode 154.寻找旋转排序数组中的最小值II...

v2-607745373bdcc4df14f5fbd3756abf56_1440w.jpg?source=172ae18b

祖传的手艺不想丢了,所以按顺序写一个leetcode的题解。计划每日两题,争取不卡题吧。

154.寻找旋转排序数组中的最小值II https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/submissions/

上一题的升级版,由于数组中可能出现相等的数,那么在二分过程中nums[mid]等于nums[right]时将无从判别究竟是哪一部分发生了旋转,例如

1 2 2 2 2 2 2

2 2 2 2 2 1 2

都是合法的旋转结果,而第一次二分,可以看到nums[mid]等于nums[right],此时无法判断答案究竟位于哪个部分。一个可行的做法是将nums[right]从nums中去除,即right -= 1。这样做的话最坏情况下二分就退化到了O(n),于是干脆就选择O(n)的做法即可。

最后附上python代码:

class 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值