双指针算法总结

双指针

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

双指针技巧分类

  1. 快慢指针
    慢指针每次移动1步,快指针每次移动2步
  2. 对撞指针
    一个指针从同一数组头向数组尾移动,另一个指针从数组尾向数组头移动,可以用来进行搜索,待搜索的数组往往是排好序的
  3. 滑动窗口
    两个指针在同一数组中移动,遍历方向相同且不会相交,两个指针包围的区域即为当前的窗口,寻找解决问题的区间,常用于区间搜索

解题提示

  1. 当题目说到数组是有序数组时,就该想到用对撞指针
  2. 当题目需要移动数组里元素时,尝试使用用快慢指针

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

快慢指针

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

对撞指针

LeetCode 167.两数之和II-输入有序数组(简单)
LeetCode 680.验证回文字符串Ⅱ(简单)

滑动窗口

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

普通双指针

LeetCode 88.合并两个有序数组(简单)
LeetCode 633.平方数之和(中等)
LeetCode 524.通过删除字母匹配到字典里最长单词(中等)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值