双指针的概念

文章目录

双指针的基本思想

双指针是用于线性序列的一种思想,线性序列包括数组、字符串和链表。当用于数组和字符串时,双指针一般为两个不同的下标;当用于链表时,双指针一般为两个不同的结点。

双指针的适用场景包括同一个线性序列和两个不同的线性序列,取决于具体问题。

双指针的分类

根据双指针的移动方向是否相同,双指针可以分成同向指针和反向指针两类。

同向指针

同向指针为双指针移动方向相同的情形。常见的同向指针包括同速指针和快慢指针。

同速指针为双指针按照相同速度同时移动,指针之间的距离固定的情形。同速指针的典型例子包括寻找链表的倒数第 k k k 个结点。

快慢指针为双指针按照不同速度移动的情形。快慢指针可以用于数组和链表,数组的典型例子包括删除重复元素以及删除特定值的元素,链表的典型例子包括寻找链表的中点、判断链表中是否有环以及寻找链表中的环的入口。

反向指针

反向指针为双指针移动方向相反的情形。反向指针的常见做法是双指针从序列的首尾开始相向移动,直到相遇。

反向指针的典型例子包括判断字符串是否为回文串、反转字符串、在有序数组中寻找元素和等于目标值的两个元素。

双指针和滑动窗口的区别

双指针和滑动窗口较为相似,但是具体做法和适用场景有所不同。

滑动窗口是双指针的特例,适用于窗口两端同向移动且需要考虑窗口内部所有元素的场景。

双指针只需要考虑指针处的元素,不需要考虑指针之间的元素,且指针的移动方向可以是同向或反向。

目录

  1. 双指针题目:反转字符串
  2. 双指针题目:合并两个有序数组
  3. 双指针题目:按奇偶排序数组
  4. 双指针题目:按奇偶排序数组 II
  5. 双指针题目:反转字符串 II
  6. 双指针题目:反转字符串中的单词 III
  7. 双指针题目:反转字符串中的元音字母
  8. 双指针题目:仅仅反转字母
  9. 双指针题目:验证回文串
  10. 双指针题目:验证回文串 II
  11. 双指针题目:两数之和 II - 输入有序数组
  12. 双指针题目:删除有序数组中的重复项
  13. 双指针题目:移除元素
  14. 双指针题目:移动零
  15. 双指针题目:两个数组的交集
  16. 双指针题目:两个数组的交集 II
  17. 双指针题目:两数之和 IV - 输入二叉搜索树
  18. 双指针题目:判断子序列
  19. 双指针题目:盛最多水的容器
  20. 双指针题目:K 和数对的最大数目
  21. 双指针题目:三数之和
  22. 双指针题目:最接近的三数之和
  23. 双指针题目:四数之和
  24. 双指针题目:找到 K 个最接近的元素
  25. 双指针题目:数组中的 k 个最强值
  26. 双指针题目:煎饼排序
  27. 双指针题目:删除有序数组中的重复项 II
  28. 双指针题目:复写零
  29. 双指针题目:有效三角形的个数
  30. 双指针题目:适龄的朋友
  31. 双指针题目:区间列表的交集
  32. 双指针题目:压缩字符串
  33. 双指针题目:长按键入
  34. 双指针题目:下一个排列
  35. 双指针题目:三数之和的多种可能
  36. 双指针题目:供暖器
  37. 双指针题目:推多米诺
  38. 双指针题目:神奇字符串
  39. 双指针题目:将数组分成三个子数组的方案数
  40. 双指针题目:区间子数组个数
  41. 双指针题目:分割两个字符串得到回文串
  42. 双指针题目:找出第 K 小的数对距离
  43. 双指针题目:满足条件的子序列数目
  44. 双指针题目:删除最短的子数组使剩余数组有序
  45. 双指针题目:按字典序排在最后的子串
相关推荐
CoovallyAIHub4 小时前
谷歌量子计算迎来历史性突破!13000倍性能提升,首款可验证算法登上《Nature》封面
深度学习·算法·计算机视觉
@卞4 小时前
排序算法(1)--- 插入排序
数据结构·算法·排序算法
zh_xuan5 小时前
LeeCode 74. 搜索二维矩阵
数据结构·算法·leecode
.ZGR.5 小时前
蓝桥杯题库——部分简单题题解(Java)
java·数据结构·算法
闻缺陷则喜何志丹5 小时前
【单调队列 多重背包】P1776 宝物筛选|普及+
c++·算法·动态规划·洛谷·多重背包·单调队列
大数据张老师6 小时前
【无标题】
算法·图论
小李小李快乐不已6 小时前
图论理论基础(1)
数据结构·算法·leetcode·深度优先·图论·广度优先·宽度优先
熬了夜的程序员6 小时前
【LeetCode】80. 删除有序数组中的重复项 II
java·数据结构·算法·leetcode·职场和发展·排序算法·动态规划
祁同伟.7 小时前
【OJ】二叉树的经典OJ题
数据结构·c++·算法·容器·stl