美文网首页
剑指 Offer 第35题:复杂链表的复制

剑指 Offer 第35题:复杂链表的复制

作者: 放开那个BUG | 来源:发表于2022-08-02 10:06 被阅读0次

1、前言

题目描述

2、思路

这道题最重要的是要构建原链表和新链表的对应关系,所以可以使用一个 hashMap,key 为原链表,value 为新链表。原链表的 next、random 找到的链表,都可以通过 hashMap 找到新链表的关系,然后按需求链接。

3、代码

class Solution {
    public Node copyRandomList(Node head) {
        if(head == null){
            return null;
        }

        Node cur = head;

        Map<Node, Node> map = new HashMap<>();
        while(cur != null){
            map.put(cur, new Node(cur.val));
            cur = cur.next;   
        }

        cur = head;
        while(cur != null){
            // 新链表 next 链接
            map.get(cur).next = map.get(cur.next);
            // 新链表 random 链接
            map.get(cur).random = map.get(cur.random);

            cur = cur.next;
        }

        return map.get(head);
    }
}

相关文章

网友评论

      本文标题:剑指 Offer 第35题:复杂链表的复制

      本文链接:https://www.haomeiwen.com/subject/vznbbrtx.html