题目描述
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
if(pHead==NULL) return NULL;
ListNode* fast=pHead;
ListNode* slow=pHead;
ListNode* met=NULL;
while(fast)
{
fast=fast->next;
slow=slow->next;
if(fast==NULL)
{
return NULL;
}
fast=fast->next;
if(fast==slow)
{
met=fast;
break;
}
}
if(met)
{
slow=pHead;
while(met!=slow)
{
slow=slow->next;
met=met->next;
}
return met;
}else
{
return NULL;
}
}
};