![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
双指针法
文章平均质量分 76
在算法中,双指针是一种常用的技巧,它可以通过使用两个指针在数组或链表等数据结构上同时移动来解决问题。这两个指针可以向相同方向移动,也可以向相反方向移动,具体取决于问题的要求。
raykingl
用魔法打败魔法,走楼梯啊!
展开
-
000.双指针方法题解目录
000.双指针方法题解目录 167. 两数之和 II - 输入有序数组(中等)原创 2024-06-14 18:38:13 · 182 阅读 · 0 评论 -
524. 通过删除字母匹配到字典里最长单词(中等)
针对字典的每一个单词,使用双指针分别指向给定的字符串和单词,同合并两个有序数组类似,两个指针均从左至右遍历。逐一判断两个指针指向的字符是否相同,如果相同,右指针(指向单词的指针)向右移动一位,左指针不管是否一致均向右移动一位,当字符串遍历完(左指针已移出字符串末尾)或者单词遍历完(右指针已移除单词末尾)时则停止遍历,此时若右指针指向位置已超出单词末尾则说明能够通过删除字符串中的字符得到单词,此时满足条件,如果当前单词长度大于已知的单词,或者长度相同但字典序更小,则此时更新答案。原创 2024-06-28 15:32:31 · 562 阅读 · 0 评论 -
680. 验证回文串 II(简单)
对于给定字符串s,根据回文字符串的对称性质,使用双指针,初始化时分别指向第一个和最后一个字符,左指针从左至右遍历,右指针从右至左遍历,判断指向的字符是否相同,如果不同则需要删除字符才可能满足回文,至于删除则有两种情况,是删除左指针还是右指针指向的字符,需要分别讨论。题目的另一种变型,由两数之和变为寻找最多删除一个字符,判断是否为回文字符串。原创 2024-06-28 14:45:43 · 921 阅读 · 0 评论 -
633. 平方数之和(中等)
题目的变型,由两数之和变为两数平方之和,判断是否存在满足条件的两个整数a和b,使之平方之和等于给定的整数c。原创 2024-06-26 21:11:51 · 930 阅读 · 0 评论 -
76. 最小覆盖子串(困难)
在s中寻找一个最短的子串,使之包含t中的所有字符,t中可能存在多个相同字符,寻找的子串也应至少含有相同数量的相同字符(示例3可以进一步确认)。子串即连续的一段子字符串区间,可以进一步总结为寻找一个区间,该区间内的字符包含t中的所有字符,即双指针,左指针指向子串的起始索引,右指针指向子串的结束索引,初始时,左右指针均指向s起始索引,两个指针均从左至右移动。step1:右指针开始移动,直至包含了t中的所有字符【需要注意的视,t中的单一字符可能会出现多次,因此首先需要统计各字符出现的次数】;原创 2024-06-26 13:41:38 · 408 阅读 · 0 评论 -
142. 环形链表 II(中等)
第三个指针开始移动时,为慢指针的位置是在第一次相遇点(距离入环处距离为x),第三个指针到入环点时,此时慢指针恰好也同时回到入环点(第三个指针走A,慢指针走了A=nB-x),慢指针和第三个指针将再次相遇,因此可以确定出入环位置。同理,如果是链表中有环,那么如果两个指针的速度不一致,那么这二者终将相遇,因此可以使用双指针,一个慢指针,一个快指针实现链表是否有环的判断:如果有环,二者终将相遇,如果没有环,快指针先到链尾,为便于计算,快慢指针速度为2:1。原创 2024-06-21 17:55:24 · 952 阅读 · 0 评论 -
88. 合并两个有序数组(简单)
因此使用两个指针p1和p2,分别指向两个数组中的最后一个元素索引即m-1和n-1,当指针p1指向元素大于等于指针p2指向的元素时,则将指针p1指向的元素移入指定位置并指针向左移动一位(即p1–),否则,将指针p2指向的元素移入指定位置并指针向左移动一位(即p2–);两个数组均有序(非递减),要求合并两个数组,直观的思路,借助第三个数组,依次从左至右遍历两个数组,比较二者大小,将较小的依次放入第三个数组中,遍历完毕后,将第三个数组的元素再依次写入指定的第一个数组。原创 2024-06-18 18:35:37 · 342 阅读 · 0 评论 -
167. 两数之和 II - 输入有序数组(中等)
虽然类似,但增加了有序:寻找两个数时,固定第一个数,因此有序,因此第二个数可以直接使用二分查找算法,不用再逐一遍历。一个左指针(left)指向最小的元素,向右遍历;如果两个指针指向的元素之和大于目标值,那么将右指针左移动一位,使当前和变小一点;如果两个指针指向的元素之和小于目标值,那么将左指针右移动一位,使当前和变大一点;但需要注意的是,该题的索引是从1开始而不是0开始,因此索引值需要各加1。如果两个指针指向的元素之和等于目标值,那么它们就是我们想要的结果;原创 2024-06-14 18:33:56 · 736 阅读 · 0 评论