/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { // 头结点和相遇点 距离 入口的步数相同 ListNode meetNode = findMeetNode(pHead); if(meetNode == null){ return null;} ListNode start = pHead; while(start != meetNode){ start = start.next; meetNode = meetNode.next; } return start; } public ListNode findMeetNode(ListNode pHead){ ListNode fast = pHead,slow = pHead ; while(fast != null && fast.next != null){ fast = fast.next.next ; slow = slow.next ; if(slow == fast){ return slow ; } } return null; } }