【链表】链表中环的入口结点_双指针

思路:双指针

fast和slow指向头结点

fast一次走两步,slow一次走一步,第一次相遇停止。

fast指向头结点,slow原地不懂,让fast,slow每次走一步,当再次相遇,就是入口结点。

证明:

【链表】链表中环的入口结点_头结点_02

 代码:

public class Solution {
   
    public ListNode EntryNodeOfLoop(ListNode pHead) {
        ListNode fast=pHead;
        ListNode slow=pHead;
        while(fast!=null&&fast.next!=null&&fast.next.next!=null){
            fast=fast.next.next;
            slow=slow.next;
            if(fast==slow){
            fast=pHead;
           while(fast!=slow){
            fast=fast.next;
            slow=slow.next;
           }
        return fast;
        }
    }
        return null;
     
    }
}