答案二分:最小可行值模型
一、面试常考点
1. 不是在数组里找值
而是在“答案空间”上二分。
2. 关键条件
可行性函数 check(x) 必须满足单调性。
二、细节介绍
1. 最小可行值
若 check(mid) 可行,收缩右边界找更小可行值。
2. 最大不可行值
与上面互为镜像写法。
三、示例代码
function minFeasible(left, right, check) {
while (left < right) {
const mid = left + ((right - left) >> 1)
if (check(mid)) right = mid
else left = mid + 1
}
return left
}
四、常用应用场景
1. 产能/时间优化
最小速度、最小容量、最短工期类问题。
2. 阈值搜索
找到满足条件的最小参数。