Skip to content
进阶

一句话答案

二分不只精确查找,还能找第一个/最后一个满足条件的位置、旋转数组搜索、峰值查找等。

核心要点

常见变体:

变体关键调整
第一个 ≥ target找到时 hi=mid-1 继续
最后一个 ≤ target找到时 lo=mid+1 继续
旋转数组搜索判断哪半有序再选方向

高频题: LC33 旋转数组搜索 / LC34 查找首尾位置 / LC162 峰值

追问与易错

追问方向:

  • 二分查找的边界条件怎么处理?
  • 旋转数组有重复元素怎么办?
  • 浮点数二分怎么做?

易错点:

  • ❌ 二分只能用于有序数组——旋转/峰值等场景也可以
  • ❌ while 条件用 < 还是 <= 搞不清——取决于搜索区间定义

💡 记忆锚点

二分的核心不是"找到"而是"缩小范围":每次排除一半。找精确值是基础款;找第一个>=target,找到了别急着走,记下来继续往左找更小的(hi=mid-1);旋转数组先判断哪半边有序再决定往哪边缩。关键:while条件和边界更新必须配套,lo<=hi对应闭区间,lo<hi对应左闭右开。