原题:
解决方法:
好熟悉的味道,跟133. Clone Graph不要太相像了。既然是相同的味道,我们用相同的配方就可以了。
代码:
A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
Return a deep copy of the list.
解决方法:
好熟悉的味道,跟133. Clone Graph不要太相像了。既然是相同的味道,我们用相同的配方就可以了。
代码:
RandomListNode *copyRandomList(RandomListNode *head) {
if (!head)
return NULL;
unordered_map<RandomListNode*, RandomListNode*> m;
RandomListNode* newNode = new RandomListNode(head->label);
m[head] = newNode;
queue<RandomListNode*> q;
q.push(head);
while(!q.empty()){
RandomListNode* node = q.front();
q.pop();
if (node->next){
if (!m.count(node->next)){
RandomListNode* newNode = new RandomListNode(node->next->label);
m[node->next] = newNode;
q.push(node->next);
}
m[node]->next = m[node->next];
}
if (node->random){
if (!m.count(node->random)){
RandomListNode* newNode = new RandomListNode(node->random->label);
m[node->random] = newNode;
q.push(node->random);
}
m[node]->random = m[node->random];
}
}
return m[head];
}