题目描述:
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
思路:
function EntryNodeOfLoop(pHead)
{
// write code here
//至少3个节点才能成环
if(!pHead || !pHead.next || !pHead.next.next){
return null
}
//分别定义快慢指针
let fast = pHead.next.next
let slow = pHead.next
while(fast && slow){
if(fast !== slow){
fast = fast.next.next
slow = slow.next
}else{
break
}
}
//两者有一个走到了链表尽头都返回空
if(!fast || !slow){
return null
}
//让快指针回到A点,慢指针依然在C点,以相同的速度移动,相遇点即为入口点
fast = pHead;
while(fast !== slow){
fast = fast.next
slow = slow.next
}
return fast
}