- 题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
- 思路:
- 一直遍历链表,直到碰到一个之前出现过的节点,就是环的入口节点
- 代码:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
map<ListNode*,int> mark;
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
map<ListNode*, int>::iterator it;
while (pHead) {
it = mark.find(pHead);
if (it==mark.end()) {
mark.insert(make_pair(pHead, 1));
} else {
return pHead;
}
pHead = pHead -> next;
}
return NULL;
}
};
|
|