剑指Offer刷题(链表中环的入口结点)
一.题目描述二.代码(C++)三.提交记录四.备注
一.题目描述
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
二.代码(C++)
class Solution
{
public
:
ListNode
* EntryNodeOfLoop(ListNode
* pHead
)
{
ListNode
*fast
,*slow
;
if(!pHead
)
return NULL;
fast
= pHead
;
slow
= pHead
;
while(fast
!=NULL)
{
if(fast
->next
)
{
fast
= fast
->next
->next
;
slow
= slow
->next
;
}
else
return NULL;
if(fast
==slow
)
{
fast
= pHead
;
break;
}
}
while(1)
{
if(fast
==slow
)
return fast
;
fast
= fast
->next
;
slow
= slow
->next
;
}
}
};
三.提交记录
四.备注
设置快慢指针,根据计算,当快指针一次走两步慢指针一次走一步,相遇后,快指针从头按一次一步前进,相遇点即为起始点。