结论:找链表的入环节点,首先用两个指针,一个快指针,一个慢指针。快指针一次走两步,慢指针一次走一步,如果两个指针可以相遇,则是有环的。然后让快指针返回起点,两个指针都改成一步,则两个指针下次相遇的点就是入环点。
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead)
{
//判断是否有环
ListNode l = pHead;
ListNode r = pHead;
boolean flag = false;
while(r != null && r.next!=null){
l=l.next;
r=r.next.next;
if(l==r){
r=pHead;
while(l!=r){
l=l.next;
r=r.next;
}
if(r==l){
return l;
}
}
}
return null;
}
}