好用的算法技巧3. 巧用双指针

2019-06-1010:20:54数据结构与算法Comments1,700 views字数 428阅读模式

3. 巧用双指针

对于双指针,在做关于单链表的题是特别有用,比如“判断单链表是否有环”、“如何一次遍历就找到链表中间位置节点”、“单链表中倒数第 k 个节点”等问题。对于这种问题,我们就可以使用双指针了,会方便很多。我顺便说下这三个问题怎么用双指针解决吧。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13542.html

例如对于第一个问题文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13542.html

我们就可以设置一个慢指针和一个快指针来遍历这个链表。慢指针一次移动一个节点,而快指针一次移动两个节点,如果该链表没有环,则快指针会先遍历完这个表,如果有环,则快指针会在第二次遍历时和慢指针相遇。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13542.html

对于第二个问题文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13542.html

一样是设置一个快指针和慢指针。慢的一次移动一个节点,而快的两个。在遍历链表的时候,当快指针遍历完成时,慢指针刚好达到中点。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13542.html

对于第三个问题文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13542.html

设置两个指针,其中一个指针先移动k个节点。之后两个指针以相同速度移动。当那个先移动的指针遍历完成的时候,第二个指针正好处于倒数第k个节点。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13542.html

你看,采用双指针方便多了吧。所以以后在处理与链表相关的一些问题的时候,可以考虑双指针哦。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13542.html

作者:帅地
来源:知乎文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13542.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/suanfa/13542.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定