经典做法,原理:加法交换律。
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead){ ListNode slow=pHead, fast=pHead; while(fast!=null&&fast.next!=null){ slow=slow.next; fast=fast.next.next; if(slow==fast) break; } if(fast==null||fast.next==null) return null; slow=pHead; while(fast!=slow){ fast=fast.next; slow=slow.next; } return fast; } }