一、题目
解法一、快慢指针法
通过两个快慢不同的指针,快的每次前进两格,慢的每次一格。
相遇点与环入口的距离与pHead与环入口的距离相等。然后即可找到环入口。
class Solution {
public:
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
ListNode* l1 = pHead;
ListNode* l2 = pHead;
while(l1 != nullptr && l1->next != nullptr)
{
l1 = l1->next->next;
l2 = l2->next;
if(l1 == l2)
{
break;
}
}
if(l1 == nullptr||l1->next==nullptr){return nullptr;}
l1 = pHead;
while(l1 != l2)
{
l1 = l1->next;
l2 = l2->next;
}
return l1;
}dede