二分搜索笔记

在有序数组中找>=num最左的位置

不断地进行二分,不断进行对于ans的数值的更新(找到了数值也要继续)

代码

优化

在去中点的时候,可能会发生溢出的情况,所以可以优化为

m = (l-r)/2;这样就避免了溢出的情况

在有序数组中找<=num最右的位置

作法如同上面

二分算法不一定运用于有序数组上(寻找峰值问题)

题目:(leetcode162)

给你一个数组,数组的第一位以及最后一位都是极小的数字,且相邻的数组不相等,如果一个数字比它相邻的数字大,那么则定义为峰值

思路:

因为数组的第一位以及最后一位都是极小的数字,所以第一位数字与第二位数字呈现上升趋势,同理最后两位呈现下降趋势,说明中间一定存在峰值,利用二分取到中间值,判断一下是否为峰值,如果不是,那么判断一下,中间点两端与中间值的大小,获得一下趋势,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值