专栏首页CtrlCV博客【剑指Offer】复杂链表的复制

【剑指Offer】复杂链表的复制

题目

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。

示例 1:

输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

题解

class Solution {
    public Node copyRandomList(Node head) {
        Map<Node,Node> map = new HashMap<>();
        Node cur=head;
        while(cur!=null){
            map.put(cur,new Node(cur.val));
            cur=cur.next;
        }
        cur=head;
        while(cur!=null){
            map.get(cur).next=map.get(cur.next);
            map.get(cur).random=map.get(cur.random);
            cur=cur.next;
        }
        return map.get(head);
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【剑指Offer】合并两个排序的链表

    输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制:

    小新哟
  • 【剑指Offer】调整数组顺序使奇数位于偶数前面

    输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL

    小新哟
  • QQ二维码登录API源码

    小新哟
  • LeetCode 430. 扁平化多级双向链表(DFS)

    您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如...

    Michael阿明
  • 暴力搜索------回溯法

    回溯法(backtracking)是深度优先搜索(DFS)的一种,按照深度优先的顺序便利解答树。应用范围很广,只要能把待求解的问题分成不太多的步骤,每个步骤又...

    刘开心_1266679
  • 数据结构-静态链表及其插入删除操作

    什么是静态链表 我们平常提及的链表一般指的是动态链表,是使用指针将一个一个的结点连起来,除了动态链表之外,还有静态链表,这种链表用数组来描述,主要为了解决没有指...

    chaibubble
  • LeetCode 1214. 查找两棵二叉搜索树之和(二叉树迭代器+双指针)

    给出两棵二叉搜索树,请你从两棵树中各找出一个节点,使得这两个节点的值之和等于目标值 Target。

    Michael阿明
  • 静态链表

    看 PHP7 底层源码的书,其中提到 PHP7 的数组使用逻辑链表在进行维护,所谓逻辑链表,就是不再使用指针进行管理,而是使用数组这种数据结构,...

    码农UP2U
  • Python 操作 MySQL 的正确姿势

    使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是 MySQLdb),PyMySQL 和 SQLAlchemy 。本文主...

    serena
  • [剑指offer] 连续子数组的最大和

    HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候...

    尾尾部落

扫码关注云+社区

领取腾讯云代金券