public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead) {
//定义两个快慢指针
ListNode low = pHead;
ListNode high = pHead;
//循环:判断前两个结节是否为空
while(high != null && high.next !=null){
//low走一步,high走两步
high = high.next.next;
low = low.next;
//相等则跳出循环
if(low == high){
break;
}
}
//判断当前节点是否为空及后一个是否为空()
if(high == null || high.next ==null){
return null;
}
//跳出循环,让快指针从头开始
//两个指针都只走一步
high = pHead;
while(high != low){
low = low.next;
high = high.next;
}
return high;
}
}