138. Copy List with Random Pointer
答案
public class Solution {
public RandomListNode copyRandomList(RandomListNode head) {
Map<RandomListNode, RandomListNode> map = new HashMap<RandomListNode, RandomListNode>();
RandomListNode p = head;
while (p != null) {
map.put(p, new RandomListNode(p.label));
p = p.next;
}
p = head;
while (p != null) {
RandomListNode node = map.get(p);
node.next = map.get(p.next);
node.random = map.get(p.random);
p = p.next;
}
return map.get(head);
}
}
图文详解

参考
Java O(n) solution