给定一个链表,若其中包含环,则输出环的入口节点。
若其中不包含环,则输出null
。
样例
给定如上所示的链表:
[1, 2, 3, 4, 5, 6]
2
注意,这里的2表示编号是2的节点,节点编号从0开始。所以编号是2的节点就是val等于3的节点。
则输出环的入口节点3.
采用hash的方式,将遍历过的结点的指针都记录下来,当出现重复的时候就是环的入口节点。
class Solution {
public:
unordered_map<ListNode*,int> hash;
ListNode *entryNodeOfLoop(ListNode *head) {
ListNode* p = head;
while(p){
if (hash[p])
return p;
else if (!hash[p])
hash[p]++;
p = p -> next;
}
return nullptr;
}
};