👆 双指针
使用两个指针在序列中协同移动,通常用于有序数组或需要同时维护两端信息的场景,可将 O(n²) 降至 O(n)。
4 题 · 简单 ×1 中等 ×2 困难 ×1
| # | 题目 | 难度 |
|---|---|---|
| 283 | 移动零 | 简单 |
| 11 | 盛最多水的容器 | 中等 |
| 15 | 三数之和 | 中等 |
| 42 | 接雨水 | 困难 |
核心思路
- 移动零:快慢指针,慢指针指向下一个非零元素应填入的位置,快指针扫描非零元素依次覆盖。
- 盛最多水的容器:左右指针从两端收缩,每次移动较短的那侧(因为移动较长侧不可能增大面积)。
- 三数之和:排序后固定第一个数,用左右双指针在剩余区间找两数之和等于其相反数;注意去重。
- 接雨水:左右指针维护
maxLeft和maxRight,当前短板决定该侧能接的水量。