链表中环的入口结点
Posted 一个不会coding的girl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表中环的入口结点相关的知识,希望对你有一定的参考价值。
题目
一个链表中包含环,请找出该链表的环的入口结点。
分析
首先检查该链表是否为环,设置一个快指针fast,每次走两步,一个慢指针slow,每次走一步。若fast==null或fast.next==null,表示不存在环;当fast==slow时,存在环。
将fast指向链表头,每次走一步,slow还是每次走一步,当fast与slow相遇时,即为环的入口结点。
代码
1 public ListNode EntryNodeOfLoop(ListNode pHead){ 2 if(pHead==null) 3 return null; 4 ListNode slow = pHead, fast = pHead; 5 while(true){ 6 if(fast==null) 7 return null; 8 slow = slow.next; 9 fast = fast.next.next; 10 if(slow==fast) 11 break; 12 } 13 fast = pHead; 14 while(fast!=slow){ 15 fast = fast.next; 16 slow = slow.next; 17 } 18 return fast; 19 }
以上是关于链表中环的入口结点的主要内容,如果未能解决你的问题,请参考以下文章