美文网首页leetCode做题笔记
链表是否有环:Linked List Cycle

链表是否有环:Linked List Cycle

作者: 饭扭圆 | 来源:发表于2021-07-20 08:45 被阅读0次

链表是否有环Linked List Cycle

方法:使用快慢指针:

证明:慢指针跑过的路径为s1=a+b+x*circle (x为慢指针跑的圈数)

快指针跑过的路径为s2=2*s1=a+b+y*circle (y为快指针跑的圈数) 

两式相减得到:a+b =(y-2x)*circle

也就是只要存在y、x满足上式,就一定存在相遇点。

因为b < circle,不难推理出y、x一定存在。

链表是否有环IILinked List CycleII

找出环开始的节点

方法:在上一题的基础上,相遇后,使用两个指针,一个指向head,一个指向当前相遇节点,分别每次前进一步,知道相遇。

证明:由上一题可以证明,存在y、x满足

a + b =  (y - 2x) * circle

由此可得出,必然存在z,使得:

a + b = (z + 1) circle

即:

a = z*circle + ( circle - b )

即:

a = z*circle + c

所以上式一定成立,两个指针一定会相遇在环开始的节点,相遇时开始时指向当前相遇节点跑了z圈。

相关文章

  • 怎样应对IT面试与笔试-(十五)

    Linked List 链表 141. Linked List Cycle 判断单链表中是否有环 使用到的数据结...

  • 链表是否有环:Linked List Cycle

    链表是否有环:Linked List Cycle 方法:使用快慢指针: 证明:慢指针跑过的路径为s1=a+b+x*...

  • Day17

    Linked List Cycle**思路:判断是不是循环链表?不等价于判断链表里是否有环?前一个问题:最后一点结...

  • Linked List Cycle II

    Linked List Cycle II 今天是一道有关链表的题目,是Linked List Cycle(回复02...

  • LeetCode-142 环形链表Ⅱ-M

    环形链表Ⅰ[https://leetcode-cn.com/problems/linked-list-cycle/...

  • 分类总结

    1、判断链表循环 141、 Linked List Cycle 判断链表是否是循环链表。思路主要有两种,第一种是将...

  • 链表求环

    LeetCode 141. Linked List Cycle 142.Linked List Cycle II ...

  • 6.24 linkedListCycles & reor

    to do 1] Linked List Cycle 2] Linked List Cycle II 3] Reo...

  • detectCycle

    https://leetcode.com/problems/linked-list-cycle-ii/给定一个链表...

  • Linked List Cycle II

    https://leetcode.com/problems/linked-list-cycle-ii/给定一个链表...

网友评论

    本文标题:链表是否有环:Linked List Cycle

    本文链接:https://www.haomeiwen.com/subject/tbrlmltx.html