👆 双指针

使用两个指针在序列中协同移动,通常用于有序数组或需要同时维护两端信息的场景,可将 O(n²) 降至 O(n)。

4 题  ·  简单 ×1  中等 ×2  困难 ×1

# 题目 难度
283 移动零 简单
11 盛最多水的容器 中等
15 三数之和 中等
42 接雨水 困难

核心思路

  • 移动零:快慢指针,慢指针指向下一个非零元素应填入的位置,快指针扫描非零元素依次覆盖。
  • 盛最多水的容器:左右指针从两端收缩,每次移动较短的那侧(因为移动较长侧不可能增大面积)。
  • 三数之和:排序后固定第一个数,用左右双指针在剩余区间找两数之和等于其相反数;注意去重。
  • 接雨水:左右指针维护 maxLeftmaxRight,当前短板决定该侧能接的水量。