代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class Solution { public boolean hasCycle(ListNode head) { if(head == null){ return false; } ListNode slow = head; ListNode fast = head.next; while(slow != fast){ if(fast == null || fast.next == null){ return false; } slow = slow.next; fast = fast.next.next; } return true; } }
|
原理解析
设快指针在慢指针距离1格,快指针每次移动2格,满指针每次移动1格。当两个指针都进入环后,那么移动$n$次且相遇时有:
$k_{1}$与$k_{2}$取合适的整数时,此方程的n有解。故若链表中存在环,那么快慢指针必定会相遇。
本文标题:链表环-快慢指针的数学原理
文章作者:SkecisAI
发布时间:2020年10月09日 - 17:40:57
最后更新:2021年12月02日 - 20:41:46
原始链接:http://www.skecis.top/2020/10/09/循环链表快慢指针/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。