思路
map临时保存链表结点的映射关系,然后完成随机映射连接
代码
import java.util.*;
public class Solution {
public RandomListNode Clone(RandomListNode pHead){
HashMap<RandomListNode,RandomListNode> map=new HashMap<>();
RandomListNode p=pHead;
RandomListNode H=new RandomListNode(0);
RandomListNode p1=H;
//建立next连接,并且建立原链表结点与新链表结点的映射关系
while(p!=null){
RandomListNode temp=new RandomListNode(p.label);
map.put(p,temp);
p1.next=temp;
p=p.next;
p1=p1.next;
}
//建立 random连接
p=pHead;
while(p!=null){
map.get(p).random=map.get(p.random);
p=p.next;
}
return H.next;
}
} 
京公网安备 11010502036488号