题目
一个链表中包含环,请找出该链表的环的入口结点。
分析
首先检查该链表是否为环,设置一个快指针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 }
来源:https://www.cnblogs.com/jiqianqian/p/6951651.html