/*// Definition for a Node.class Node {public: int val; Node* next; Node* random; Node(int _val) { val = _val; next = NULL; random = NULL; }};*/classSolution{public:Node*copyRandomList(Node*head){unordered_map<Node*,Node*>d;Node*dummy=newNode(0);Node*tail=dummy;for(autocur=head;cur;cur=cur->next){tail->next=newNode(cur->val);tail=tail->next;d[cur]=tail;}tail=dummy->next;for(autocur=head;cur;cur=cur->next){tail->random=d[cur->random];tail=tail->next;}returndummy->next;}};
1 2 3 4 5 6 7 8 910111213141516171819202122232425
/** * Definition for a Node. * type Node struct { * Val int * Next *Node * Random *Node * } */funccopyRandomList(head*Node)*Node{d:=map[*Node]*Node{}dummy:=&Node{}tail:=dummyforcur:=head;cur!=nil;cur=cur.Next{tail.Next=&Node{Val:cur.Val}tail=tail.Nextd[cur]=tail}tail=dummy.Nextforcur:=head;cur!=nil;cur=cur.Next{tail.Random=d[cur.Random]tail=tail.Next}returndummy.Next}
/*// Definition for a Node.public class Node { public int val; public Node next; public Node random; public Node(int _val) { val = _val; next = null; random = null; }}*/publicclassSolution{publicNodeCopyRandomList(Nodehead){Dictionary<Node,Node>d=newDictionary<Node,Node>();Nodedummy=newNode(0);Nodetail=dummy;for(Nodecur=head;cur!=null;cur=cur.next){tail.next=newNode(cur.val);tail=tail.next;d[cur]=tail;}tail=dummy.next;for(Nodecur=head;cur!=null;cur=cur.next){tail.random=cur.random==null?null:d[cur.random];tail=tail.next;}returndummy.next;}}
/*// Definition for a Node.class Node {public: int val; Node* next; Node* random; Node(int _val) { val = _val; next = NULL; random = NULL; }};*/classSolution{public:Node*copyRandomList(Node*head){if(!head){returnnullptr;}for(Node*cur=head;cur;){Node*node=newNode(cur->val);node->next=cur->next;cur->next=node;cur=node->next;}for(Node*cur=head;cur;cur=cur->next->next){if(cur->random){cur->next->random=cur->random->next;}}Node*ans=head->next;for(Node*cur=head;cur;){Node*nxt=cur->next;if(nxt){cur->next=nxt->next;}cur=nxt;}returnans;}};
/** * Definition for a Node. * type Node struct { * Val int * Next *Node * Random *Node * } */funccopyRandomList(head*Node)*Node{ifhead==nil{returnnil}forcur:=head;cur!=nil;{node:=&Node{cur.Val,cur.Next,nil}cur.Next=nodecur=node.Next}forcur:=head;cur!=nil;cur=cur.Next.Next{ifcur.Random!=nil{cur.Next.Random=cur.Random.Next}}ans:=head.Nextforcur:=head;cur!=nil;{nxt:=cur.Nextifnxt!=nil{cur.Next=nxt.Next}cur=nxt}returnans}
/*// Definition for a Node.public class Node { public int val; public Node next; public Node random; public Node(int _val) { val = _val; next = null; random = null; }}*/publicclassSolution{publicNodeCopyRandomList(Nodehead){if(head==null){returnnull;}for(Nodecur=head;cur!=null;){Nodenode=newNode(cur.val,cur.next);cur.next=node;cur=node.next;}for(Nodecur=head;cur!=null;cur=cur.next.next){if(cur.random!=null){cur.next.random=cur.random.next;}}Nodeans=head.next;for(Nodecur=head;cur!=null;){Nodenxt=cur.next;if(nxt!=null){cur.next=nxt.next;}cur=nxt;}returnans;}}