代码:
/*
// Definition for a Node.
class Node {
int val;
Node next;
Node random;
public Node(int val) {
this.val = val;
this.next = null;
this.random = null;
}
}
*/
class Solution {
public Node copyRandomList(Node head) {
if(head==null)return null;
Node n1 = new Node(head.val);
Node n2;
Node newHead = n1;
Node cur = head;
Map<Node,Node> map = new HashMap<>();
map.put(head,newHead);
while(cur.next!=null){
cur = cur.next;
n2 = new Node(cur.val);
map.put(cur,n2);
n1.next = n2;
n1 = n2;
}
n1.next = null;
cur = head;
Node newCur = newHead;
while(cur!=null){
newCur.random = map.get(cur.random);
cur = cur.next;
newCur = newCur.next;
}
return newHead;
}
}