题目描述
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
提示:关键是如何判断节点之前是否已经被访问过
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
int num=0x7fffffff;
vector<int> vc;
ListNode* temp=pHead;
if(temp==NULL)
{
return NULL;
}
while(temp!=NULL)
{
if(temp->val==num)
{
ListNode* entry=temp;
ListNode* root=pHead;
int i=0;
while(root!=entry)
{
root=root->next;
i++;
}
entry->val=vc[i];
return entry;
}
vc.push_back(temp->val);
temp->val=num;
temp=temp->next;
}
return NULL;
}
};