剑指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题目和一些刷题用的数据结构,单调栈,树状数组,差分数组,后面还会更新红黑树等较为复杂的数据结构