大致思路:设置快慢指针,找到快慢指针相交的节点,没有交点则返回null;两个指针,一个从头开始遍历,一个从交点开始遍历,相遇的点就是环的入口节点。
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead) {
if(pHead==null||pHead.next==null)return null;
ListNode fast = pHead,slow = pHead;
while(true){
if(fast==null)return null;
fast = fast.next.next;
slow = slow.next;
if(fast==slow)break;
}
fast = pHead;
while(fast!=slow){
fast = fast.next;
slow = slow.next;
}
return slow;
}
}