双指针的概念

文章目录

双指针的基本思想

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

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

双指针的分类

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

同向指针

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

同速指针为双指针按照相同速度同时移动,指针之间的距离固定的情形。同速指针的典型例子包括寻找链表的倒数第 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. 双指针题目:按字典序排在最后的子串
相关推荐
INGNIGHT8 小时前
270 · 电话号码的字母组合II(Trie)
linux·算法
2401_839080548 小时前
C++常见八股
数据结构·c++·算法
青山是哪个青山8 小时前
LeetCode 188:买卖股票的最佳时机 IV
算法
暮雨封夕8 小时前
跳表(Skip List)详解:原理、实现、使用场景与实际应用
数据结构
mikuyyds9 小时前
geo-toolbox 插件算法解析:RUSLE 与 MUSLE 的工程化落地
算法·rust·gis
a187927218319 小时前
【算法】树(二):队列与祖先——BFS 骨架三配件、短路透传与合流
算法·leetcode·二叉树··bfs·算法讲解·树遍历
miller-tsunami9 小时前
排序的相关知识点
数据结构·排序算法
syagain_zsx9 小时前
算法基础篇 · 03 枚举(C++ 题解)
c++·算法·二进制·枚举
weixin_3077791310 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
我是章汕呐10 小时前
地级市能源消耗量及消耗强度数据【2006-2023年】平衡面板
人工智能·经验分享·算法·回归