双指针

  1. 相向指针:
    1. 相向指针是指两指针初始位于一头一尾,然后向中间移动。常用来:
      • 翻转字符串
  1. 同向指针
    1. 指双指针向同一方向移动,包括快慢指针,
      🎯
      滑动窗口
      ,快排分区等。
      两个指针维护的是一大区间。
      应用了某些单调的性质,将原先O(n^2) 的情况(两层循环维护两个指针)优化为O(n)(只枚举O(n)的状态)
  1. 背向指针
    1. 指俩指针初始点均在中间,然后一向左一向右的移动。常用来查找最长回文子串。
      🧪
      5. 最长回文子串

速通

双指针完整笔记参见
🌐
双指针
双指针有:同向,相向,背向 三种。通常,二分法、单调栈、单调队列、滑动窗口、链表操作等都属于广义的双指针。其本质是维护一段区间。但此处的双指针更多特指以下三种情况
  • 维护一段区间的问题 26,283
  • 根据单调性不断缩减搜索空间的 11,825
  • 抽象为找链表环的问题 287,202
🦯
11. 盛最多水的容器
面积取决于指针的距离与值小的值乘积