剑指offer-25-复杂链表的复制
复杂链表的复制
http://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba
思路
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;
}
} 剑指offer与数据结构 文章被收录于专栏
本专栏包括剑指offer题目和一些刷题用的数据结构,单调栈,树状数组,差分数组,后面还会更新红黑树等较为复杂的数据结构
