package leetcode;
import java.util.HashMap;
public class offer_35 {
public Node copyRandomList(Node head) {
//防止出现空链表
if(head==null) {
return null;
}
//哈希表法
HashMap<Node, Node> map=new HashMap<Node, Node>();
Node node=head;
while(node!=null) {
//map中存入每个节点及其复制的节点
map.put(node, new Node(node.val));
node=node.next;
}
node=head;
Node newHead=map.get(head);
while(node!=null) {
//将node.next对应的value与拷贝到当前复制节点的next
map.get(node).next=map.get(node.next);
//将node.random对应的value与拷贝到当前复制节点的random
map.get(node).random=map.get(node.random);
node=node.next;
}
return newHead;
}
}