返回首页

答案二分:最小可行值模型

一、面试常考点

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. 阈值搜索

找到满足条件的最小参数。