力扣-复制带随机指针的链表
给一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。
例如: 有 X 和 Y 两个节点,其中 X.random --> Y 。那么在复制链表中对应的两个节点 x 和 y ,同样有 x.random --> y 。返回复制链表的头节点。
参考代码:
/*
// 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) {if(head == null){return head;}Node cur = head;Map<Node,Node> map = new HashMap<>();while(cur != null){Node node = new Node(cur.val);map.put(cur,node);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);}
}
截图:
力扣-复制带随机指针的链表相关推荐
- 【刷题日记】3.复制带随机指针的链表
目录 一.题目介绍 编辑 二.题目分析 三.代码实现 题目链接:138. 复制带随机指针的链表 - 力扣(LeetCode) 一.题目介绍 我们最一开始看到题目可能会没有思路,或者压根就不知道如何下 ...
- 138. 复制带随机指针的链表 golang
138. 复制带随机指针的链表 这个题结构体特殊,需要更改上一篇博客的node结构体 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点. 要求返回这个链表的 深 ...
- M1: 复制带随机指针的链表
一个链表问题:复制带随机指针的链表 题目:有一个链表L,其每个节点有2个指针,一个指针next指向链表的下个节点,另一个random随机指向链表中的任一个节点,可能是自己或者为空,写一个程序,要求复制 ...
- 【力扣】复制带随机指针的链表题解 C语言实现
前言 这是力扣里的一道经典链表题,据说掌握此题你对链表的理解能力就是优秀水平了 题目 /*** Definition for a Node.* struct Node {* int val;* str ...
- python 带随机指针的链表深度复制_LeetCode:复制带随机指针的链表
请实现 copyRandomList 函数,复制一个复杂链表.在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null. 思路: ...
- 【数据结构与算法】之深入解析“复制带随机指针的链表”的求解思路与算法示例
一.题目 ① 题目描述 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点. 构造这个链表的深拷贝,深拷贝应该正好由 n 个全新节点 ...
- LeetCode 138 复制带随机指针的链表-中等
给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点. 构造这个链表的 深拷贝. 深拷贝应该正好由 n 个 全新 节点组成,其中每个新 ...
- LeetCode 138. 复制带随机指针的链表(哈希 / 深拷贝)
1. 题目 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点. 要求返回这个链表的深拷贝. <剑指Offer>同题:面试题35. 复杂链表的复制 2 ...
- LeetCode 138 复制带随机指针的链表
题目描述 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点. 要求返回这个链表的 深拷贝. 我们用一个由 n 个节点组成的链表来表示输入/输出中的链表.每个节点 ...
最新文章
- 关于二叉树的几个必须掌握的实现
- 【转】Weblogic的集群
- 笔记:基于DCNN的图像语义分割综述
- 后端用python还是php_【后端开发】2019学python还是php
- Googletest 实现简要分析
- arm-linux-ld: cannot find -lgcc,/arm-linux-gnueabi/bin/ld: cannot find crt1.o
- Java加密与解密的艺术~DigestInputStream
- java对象属性的作用域类型_java 对象和类
- 8、QuickExec命令行的使用
- android自动点击开红包,自动点击连点器
- 服务器系统在虚拟机安装win7系统安装教程,vmware虚拟机如何安装win7系统_vmware虚拟机安装win7纯净版图文教程...
- Mac 好用的 Android 模拟器整理(玩游戏、装应用、支持咸鱼、拼多多...)
- 2022年的ISTQB,你考了没?
- 16.面向对象-基础
- 【Linux回炉 目录配置】
- 程序员的悲哀--动车追尾
- MySQL查询优化方法
- git 移除项目版本控制_Git - 关于版本控制
- elasticsearch倒排索引原理与中文分词器
- 英语口语203之每日十句口语