双指针

    双指针一般用于遍历数组,两个指针指向数组的不同元素,两个指针相互协助解决问题。当然,双指针问题可以延伸到多指针问题,用多个指针协助解决问题。


双指针技巧分类

    1. 快慢指针

        慢指针每次移动1步,快指针每次移动2步

    2. 对撞指针

        一个指针从同一数组头向数组尾移动,另一个指针从数组尾向数组头移动,可以用来进行搜索,待搜索的数组往往是排好序的

    3. 滑动窗口

        两个指针在同一数组中移动,遍历方向相同且不会相交,两个指针包围的区域即为当前的窗口,寻找解决问题的区间,常用于区间搜索


解题提示

    1. 当题目说到数组是有序数组时,就该想到用对撞指针

    2. 当题目需要移动数组里元素时,尝试使用用快慢指针


双指针算法相关例题(点击题目跳转至相应题解)

1. 快慢指针

​LeetCode 142.环形链表II(中等)​


2. 对撞指针

​LeetCode 167.两数之和II-输入有序数组(简单)​

LeetCode 680.验证回文字符串Ⅱ(简单)


3. 滑动窗口

​LeetCode 76.最小覆盖子串(困难)​


4. 普通双指针

​LeetCode 88.合并两个有序数组(简单)​

LeetCode 633.平方数之和(中等)

LeetCode 524.通过删除字母匹配到字典里最长单词(中等)