题目描述
一个链表中包含环,请找出该链表的环的入口结点。
思路1:利用STL中set容器,不能有相同元素的特性,遍历一次原来list,就可以判断有没有环,环的入口地址
s.insert(node).second,不仅插入了元素,也判断了插入是否成功,如果不成功,说明集合中已经存在该元素,
该元素就是入口元素。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
set<ListNode*> s; //定义一个集合
if(pHead == NULL)
return NULL;
ListNode* node = pHead;
while(node != NULL){
if(!s.insert(node).second)
node = node->next;
else
return node;
}
return NULL;
}
};
思路2: