双指针的概念

文章目录

双指针的基本思想

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

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

双指针的分类

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

同向指针

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

同速指针为双指针按照相同速度同时移动,指针之间的距离固定的情形。同速指针的典型例子包括寻找链表的倒数第 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. 双指针题目:按字典序排在最后的子串
相关推荐
董董灿是个攻城狮2 小时前
AI视觉连载8:传统 CV 之边缘检测
算法
AI软著研究员9 小时前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish10 小时前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱11 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者1 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮1 天前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者1 天前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考1 天前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx1 天前
CART决策树基本原理
算法·机器学习
Wect1 天前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript