二分查找利用单调性,每次排除一半搜索范围。使用前先确认两件事:答案落在一个明确的范围内,而且检查中间位置后,能确定哪一半范围可以舍弃。 在升序数组中找元素符合这个条件;寻找最小可行速度、最小容量等问题,也可以把答案范围作为搜索对象。常见的判断结果是: False False False | True True True ↑ 第一个满足条件的位置 基…
滑动窗口主要用于解决 连续子数组 / 子串 问题。 核心思想: 用左右两个指针维护一个连续区间,右边扩张,左边根据条件收缩,避免重复计算。 1. 定长滑动窗口 窗口长度固定为 k。 核心流程: 右边加入 → 窗口形成 → 更新答案 → 左边移出 Python 模板: left = 0 sums = 0 for right, x in enumera…