二分查找算法

在某条件x下,求解y的最小或者最大值,一般用二分查找。x一般用来写check函数,y可能的区间作为二分的范围。(最大化最小值和最小化最大值,经典的二分套路。如果条件x是隐式的,那么可以考虑y变大或者变小时,对于另外一些参数的影响,进而写出check函数。比如2616. 最小化数对的最大差值 - 力扣(LeetCode)

前提:单调性(比如x0是解,那么对于所有的x<x0,都不满足,对于所有的x>x0,都满足。这里也可以看出是红蓝还是蓝红)

所以可能的答案构成了解空间,进而用来初始化左右边界

构造询问,也就是设计check函数(可以很灵活的设计,着重看擦边情况)

红蓝染色法(对可能的值进行询问)(根据求最小和最大有所差异)-》循环不变量:决定了返回值

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值