import java.util.*;
/*
public class RandomListNode {
int label;
RandomListNode next = null;
RandomListNode random = null;
RandomListNode(int label) {
this.label = label;
}
}
*/
public class Solution {
public RandomListNode Clone(RandomListNode pHead) {
Map<RandomListNode,RandomListNode> map=new HashMap<>();
RandomListNode dummy=new RandomListNode(-1);
dummy.next=pHead;
RandomListNode p=dummy;
int flag=0;
while(p.next!=null){
RandomListNode temp=new RandomListNode(p.next.label);
map.put(p.next,temp);
if(flag!=0){
map.get(p).next=temp;
}else{
flag=1;
}
p=p.next;
}
p=dummy;
while(p.next!=null){
if(p.random!=null){
map.get(p).random=map.get(p.random);
}
p=p.next;
}
return map.get(dummy.next);
}
}
最普通的方法,还有交错连接的方法。