首页 > 其他 > 详细

剑指Offer35.复杂链表复制

时间:2020-12-28 10:35:08      阅读:26      评论:0      收藏:0      [点我收藏+]

题目链接:复杂链表复制

思路:哈希表。先遍历一遍用hash表存储新旧链表对应的结点,然后再遍历一遍通过哈希表确定新链表中random所指向的结点。

代码:

/*
// Definition for a Node.
class Node {
    int val;
    Node next;
    Node random;

    public Node(int val) {
        this.val = val;
        this.next = null;
        this.random = null;
    }
}
*/
class Solution {
    public Node copyRandomList(Node head) {
        Map<Node, Node> randomMap = new HashMap<>();
        Node t = null;
        for(Node p = head, q=null, pre = null; p != null; p = p.next){
            q = new Node(p.val);
            if(t == null){
                t = q;
            }else{
                pre.next = q;
            }
            pre = q;
            randomMap.put(p, q);
        }
        for(Node p = head, q = t; p != null; p = p.next, q = q.next){
            q.random = randomMap.get(p.random);
        }
        return t;
    }
}

剑指Offer35.复杂链表复制

原文:https://www.cnblogs.com/liuyongyu/p/14199679.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!