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

全部评论

相关推荐

喜欢核冬天的哈基米很想上市:会爆NullPointerException的
点赞 评论 收藏
分享
04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务