在某条件x下,求解y的最小或者最大值,一般用二分查找。x一般用来写check函数,y可能的区间作为二分的范围。(最大化最小值和最小化最大值,经典的二分套路。如果条件x是隐式的,那么可以考虑y变大或者变小时,对于另外一些参数的影响,进而写出check函数。比如2616. 最小化数对的最大差值 - 力扣(LeetCode))
前提:单调性(比如x0是解,那么对于所有的x<x0,都不满足,对于所有的x>x0,都满足。这里也可以看出是红蓝还是蓝红)
所以可能的答案构成了解空间,进而用来初始化左右边界
构造询问,也就是设计check函数(可以很灵活的设计,着重看擦边情况)
红蓝染色法(对可能的值进行询问)(根据求最小和最大有所差异)-》循环不变量:决定了返回值