/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead) {
if(pHead == null || pHead.next == null) {
return null;
}
ListNode slow = pHead, fast = pHead;
do {
fast = fast.next;
if(fast == null) {
return null;
}
fast = fast.next;
if(fast == null) {
return null;
}
slow = slow.next;
} while(slow != fast);
fast = pHead;
while(fast != slow) {
fast = fast.next;
slow = slow.next;
}
return fast;
}
}