双指针总结
算法入门
双指针总结
双指针是一种思想,在二分查找等算法中经常用到。具体就是用两个变量动态存储两个或多个结点,来方便我们进行一些操作。
通常用在线性的数据结构中,比如链表和数组,有时候也会用在图算法中。
数组,链表!!!!
1快慢指针
- 计算链表的中点
- 判断链表是否有环
- 判断链表中环的起点
- 求链表中环的长度
- 求链表倒数第k个元素
2碰撞指针
一般是排好序的数组/链表 特例: partition算法, 即为非排序数组
- 二分查找问题
- n数之和问题
3滑动窗口法
两个指针,一前一后组成滑动窗口,并计算滑动窗口中的元素的问题。
-
数组 左右指针比大小排序
-
数组 额外数组 环状替换 翻转(双指针交换)
-
数组 左指针零 右指针非零数 交换且保持相对顺序
-
数组 头尾指针 移动
-
数组 头尾指针 交换
-
字符串 反转 交换
-
链表 快慢指针
-
链表 快慢指针
-
字符串 滑动窗口
-
字符串 滑动窗口