解题思路:
遇到链表拷贝的题目有一个明显的思路,就是递归和Map!只能说是yyds!每一个真实的节点映射一个拷贝的节点,不断递归下去,返回当前的节点,这样就串成一个串了,代码如下:
/*
// Definition for a Node.
class Node {
public:
int val;
Node* next;
Node* random;
Node(int _val) {
val = _val;
next = NULL;
random = NULL;
}
};
*/
class Solution {
private:
unordered_map<Node*, Node*> mp;
public:
Node* copyRandomList(Node* head) {
// 如果为空
if(head == nullptr) {
return nullptr;
}
// 如果当前位置无映射
if(!mp.count(head)) {
// 拷贝
Node * node = new Node(head -> val);
// 映射
mp[head] = node;
node -> next = copyRandomList(head -> next);
node -> random = copyRandomList(head -> random);
}
return mp[head];
}
};