本文最后更新于:16 天前
数组有序即可用双指针!
- 快慢指针
- 原地修改(链表反转(头反转【pre,cur,原地循环交换】、中间局部反转【找前、断中、反中、连后】、k个一组反转【计算长度、初始化前驱和头尾节点、循环取K个、逐组反转、更新前驱和尾结点】))
- 左右指针和快慢指针:
- 左右指针,相向而行或者相背而行
- 快慢指针,同向而行,一快一慢
- 数组中索引作为指针
- 左右指针和快慢指针:
- 滑动窗口
left指针在后,right指针在前,中间的部分就是「窗口」- 通过扩大和缩小「窗口」来解决某些问题
- 原地修改(链表反转(头反转【pre,cur,原地循环交换】、中间局部反转【找前、断中、反中、连后】、k个一组反转【计算长度、初始化前驱和头尾节点、循环取K个、逐组反转、更新前驱和尾结点】))
- 左右指针
- 二分查找
- 左右首尾相向双指针
- 循环比较中点与目标值
- 等于目标就返回,大于目标收缩右,小于目标收缩左
- n 数之和(3数之和遍历其中一个,另两个下标分别是左右边界)
- 左右相向双指针,求和比较目标值
- 大于左移小于右移等于就返回
- 反转数组
- 左右双指针相向移动交换值,直到相遇
- 回文串判断
- 最长回文串:
- 遍历原字符串每个字符
- 背向双指针自中心向两边扩散(同时考虑奇偶回文串)
- 持续更新为最大值
- 最长回文串:
- 二分查找
1 | |