双指针Two pointers

协调两个位置,利用顺序或单调性避免重复扫描。

核心约束
指针移动必须保持候选集合或匹配条件。
适用问题
有序合并、区间扫描与成对查找。
边界与取舍
不是所有双重索引都能化为线性时间。

时间与空间#

n 为元素数;两个指针只朝约定方向推进。

时间成本
满足单调推进和 O(1)O(1) 更新时 O(n)O(n)
空间成本
常见数组扫描 O(1)O(1)

每个指针移动总次数受 n 限制,两个嵌套 while 不必意味着平方时间。相向双指针求和需要有序输入;若先排序,还需加入排序时间。反复回退指针则需重新分析。

基础原理参考资料

USACO Guide · Two Pointers同向窗口、相向扫描和每个指针只线性移动的分析。

6 个概念