双指针
双指针一般用于遍历数组,两个指针指向数组的不同元素,两个指针相互协助解决问题。当然,双指针问题可以延伸到多指针问题,用多个指针协助解决问题。
双指针技巧分类
1. 快慢指针
慢指针每次移动1步,快指针每次移动2步
2. 对撞指针
一个指针从同一数组头向数组尾移动,另一个指针从数组尾向数组头移动,可以用来进行搜索,待搜索的数组往往是排好序的
3. 滑动窗口
两个指针在同一数组中移动,遍历方向相同且不会相交,两个指针包围的区域即为当前的窗口,寻找解决问题的区间,常用于区间搜索
解题提示
1. 当题目说到数组是有序数组时,就该想到用对撞指针
2. 当题目需要移动数组里元素时,尝试使用用快慢指针
双指针算法相关例题(点击题目跳转至相应题解)
1. 快慢指针
2. 对撞指针
LeetCode 167.两数之和II-输入有序数组(简单)
3. 滑动窗口
4. 普通双指针
LeetCode 524.通过删除字母匹配到字典里最长单词(中等)