复制带随机指针的链表(力扣题)

《力扣刷题笔记》除自身以外数组的乘积&& 复制带随机指针的链表 力扣解题笔记: 除自身以外数组的乘积&& 复制带随机指针的链表 阅读详情

给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。
要求返回这个链表的深拷贝。
我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val,random_index] 表示:
        ~~~~~~~~        val:一个表示 Node.val 的整数。
        ~~~~~~~~        random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。

执行用时 :
1 ms, 在所有 Java 提交中击败了70.04%的用户

class Solution {
    public Node copyRandomList(Node head) {
        if(head == null){return null;} //头指针为空即链表为空返回null

        Node cur = head;//用于遍历链表的临时变量
        Map<Node,Node> map = new HashMap<>();
        //用于建立新旧Node的映射关系<oldNode,newNode>

		//根据原有链表的Node的val建立值为val的newNode,暂忽略结点间的联系
        while(cur != null){//依次遍历链表
            Node node = new Node(cur.val);//创建newNode对象
            map.put(cur,node);//将新旧Node放入map
            cur = cur.next;
        }
        cur = head;
		//根据map建立新节点间的联系
        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);

    }
}
YOLO项目从零开始:超详细运行教程(图文保姆级教学) 至此,我们已经完整跑通了YOLO项目的安装与启动流程,无论你是零基础小白还是刚入门的AI新兵,只要按部就班操作,也能轻松实现目标检测项目的落地。 阅读详情

相关推荐

【OpenCV】手眼标定实战:从原理到calibrateHandEye的完整实现

本文详细解析了机器人视觉中的手眼标定原理与实战,重点介绍了如何使用OpenCV的calibrateHandEye函数实现从数据采集到结果验证的完整流程。文章深入剖析了AX=XB核心方程,区分了眼在手上与眼在手外两种配置,并提供了详细的代码示例与避坑指南,帮助开发者精准建立相机与机械臂末端的坐标转换关系,是机器人精准抓取的关键技术。

weixin_29046611的博客 507

力扣138. 复制带随机指针的链表

题目链接 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。 例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。

weixin_43795939的博客 990

实战指南(一)SCAPS-1D太阳能电池模拟软件从零到一:模型构建与参数解析

本文详细介绍了SCAPS-1D太阳能电池模拟软件的使用方法,从模型构建到参数解析,帮助用户快速掌握这一免费且功能强大的工具。特别适合用于单结/多结电池的电学性能分析,涵盖钙钛矿电池等常见结构的模拟实践,并提供参数调试和收敛性问题处理的实用技巧。

weixin_30588675的博客 445

力扣---复制带随机指针的链表

首先我们要知道题目的原理 题目的意思比较复杂,我们要先了解清楚题目的意思 我用不同的颜色来标线 这样看的比较清楚 题目的原意叫我们复制这样的链表 如果复制next是非常容易的 但是random比较复杂的,因为random指向是无规律的,这才是题目的难点 解决方法 我们先抓住一个重点,我们要返回一个新的链表,里面存的val值和random的值 既然需要新的链表 1.我们在每个节点的后面申请一个空间,里面存的就是val和random 2..在原链表里面把这些新空间用rando...

烁岩的博客 2004

C++ muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装

Muduo is a multithreaded C++ network library based on the reactor pattern. muduo库的介绍就是:一个基于reactor反应堆模型的多线程C++网络库。 muduo网络库是C++语言开发的一个非常优秀的网络库,作者陈硕,muduo网络库在多线程环境下性能非常高,该系列文章会分享一些muduo库源码的知识,包括它的线程池源码...

大秦坑王的专栏 3万+

华为灵衢UB总线介绍

华为发布"灵衢"(UB)超节点互联协议,旨在构建支持AI大模型计算的基础设施。该协议采用统一内存语义和对等架构,使设备可直接访问远程内存,实现资源池化。技术突破包括2.1微秒超低时延和TB级带宽,支持64节点、52万张昇腾卡的集群互联。相比传统RDMA,"灵衢"更注重系统级资源调度,而非单纯数据传输。华为开放技术规范,推动生态建设,已有厂商开发兼容IP核。"灵衢"可适应x86、RISC-V等架构,未来将扩展至百万卡规模集群。

技术引领业务创新 4417

java实现复制带随机指针的链表(力扣138题)

我们要复制以上链表的。重点要保证映射关系的一致 public class Node { int val; Node next; Node random; public Node(int val) { this.val = val; this.next = null; this.random = null; } } public class Solution{ public Node copyRand..

m0_53653818的博客 746

IIC软件协议及硬件知识汇总

IIC软件协议及硬件相关知识,真的是非常齐全了!

记得诚 1万+

LeetCode Java刷题笔记—138. 复制带随机指针的链表

LeetCode Java刷题笔记—138. 复制带随机指针的链表

终生学习践行者 823

【OS】AUTOSAR OS Alarm实现原理

AUTOSAR OS Alarm实现原理

qq_36056498的博客 1022

波士顿房价预测分析----以线性回归LinearRegression为例

波士顿房价数据集包括506个样本,每个样本包括13个特征变量和该地区的平均房价,房价显然和多个特征变量相关,先选择一元线性回归与多个特征建立线性方程,观察模型预测的好坏,再选择多元线性回归进行房价预测。13个特征变量缩写含义CRIM城镇人均犯罪率ZN住宅用地所占比例INDUS城镇中非住宅用地所占比例CHAS虚拟变量,用于回归分析NOX环保指数RM每栋住宅的房间数AGE1940 年以前建成的自住单位的比例DIS距离 5 个波士顿的就业中心的加权距离RAD。

我走的每一步都算数 842

Java代码题:复制带随机指针的链表(哈希)

给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点,要求返回这个链表的深拷贝。 即: 用哈希记录对应关系,代码如下: /* class Node { int val; Node next; Node random; public Node(int val) { this.val = val; t...

长不大的大灰狼 414

jsqlparser 版本不兼容:net.sf.jsqlparser.statement.select.SelectItem 以及 select.SelectBody 解决方法

看Bug直接定位到最后面的错误提示,一开始以为是UnabletostartembeddedTomcat的基本错误,后续发现排查方向错误!问题比较复杂,不过这类问题可看:出现WebServerException:UnabletostartembeddedTomcat解决方法(全)

码农研究僧的博客 2672

Leetcode刷题之复制带随机指针的链表

新的一周,还要继续加油啊!

adcxhw的博客 1199

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LeetCode第138题_复制带随机指针的链表

给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的。深拷贝应该正好由n个节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。。例如,如果原链表中有X和Y两个节点,其中。那么在复制链表中对应的两个节点x和y,同样有。返回复制链表的头节点。用一个由n个节点组成的链表来表示输入/输出中的链表。

qq_40263592的博客 1333

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【LeetCode】—— 复制带随机指针的链表LeetCode138题

题目描述 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的深度拷贝。 解题思路 代码实现 typedef struct RandomListNode RLNode; struct RandomListNode *copyRandomList(struct RandomListNode *head) { RLNode* cur =...

chenxiyuehh的博客 272

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

手撕力扣138题:优雅复制带随机指针的链表,三步搞定经典算法题

本文介绍了一种优雅的三步法解决力扣138题——复制带随机指针的链表。该算法通过原地插入复制节点、修正random指针和拆分链表三个步骤,实现了O(n)时间复杂度和O(1)空间复杂度的解决方案。核心思路是:首先在每个原节点后插入其复制节点;然后利用原节点与复制节点的相邻关系,快速定位并修正复制节点的random指针;最后将混合链表拆分为原链表和复制链表。这种方法避免了使用额外哈希表存储映射关系,代码简洁高效,是处理此类链表复制问题的经典范例。

软件科学-郝学胜 695

LeetCode第 138 题:复制带随机指针的链表 (C++)

138. 复制带随机指针的链表 - 力扣(LeetCode) 深拷贝类似:LeetCode第 133 题:克隆图(C++)_zj-优快云博客 不过这题思想简单很多: 使用哈希表映射: class Solution { public: Node* copyRandomList(Node* head) { if(!head) return head; unordered_map<Node*, Node*> m; //<原节点,深拷贝

zj 300

力扣_138 复制带随机指针的链表

力扣_138 复制带随机指针的链表

qq_24472227的博客 163

Leetcode第138题——复制带随机指针的链表

题目分析: 这道题要我们拷贝一个链表并返回拷贝链表的头节点。我们画图来分析 思路: 1.如图所示我们拷贝每一个节点,并连接到原节点的后面 //1.拷贝节点,连接到每一个原节点的后边 struct Node* cur = head; while(cur) { struct Node* copy = (struct Node*)malloc(sizeof(struct Node)); copy->next = NULL; copy-&g..

_Y__X_的博客 501

【刷题之路Ⅱ】LeetCode 138. 复制带随机指针的链表

首先我们还是需要一个cur指针来遍历原链表中的节点,然后我们需要一个copy指针保存我们待尾插的节点(即cur的next),而为了在尾插完后我们还能找到原链表的下一个节点,我们需要一个next指针来保存我们原链表的下一个节点(即copy的next)。相同的道理,其实我们也可以通过原节点来找到对应的拷贝节点的random所指向的节点,因为我们可以通过原节点来找到原链表中原节点的random指向的节点,那当我们找到了这个节点,这个节点的next不就是对应的拷贝链表中的random指向的节点了吗?

kk702392702的博客 515

【力扣第138题—复制带随机指针的链表】巧用Map解题

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝,复制这个链表,复制链表中的指针都不应指向原链表中的节点 。返回复制链表的头节点。也就是说,原链表和新链表除了存储的地址不同,其他的对应关系完全一致。 示例: 输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出:[[7,null],[13,0],[11,4],[10,2],[1,0]] 本题我们借助M..

Word码鸭的博客 985

LeetCode第138题--复制带随机指针的链表

给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的深拷贝。 /* // Definition for a Node. class Node { public: int val; Node* next; Node* random; Node() {} Node(int _val, Node* _...

king3wade的博客 259

力扣138题(复制带随机指针的链表)

力扣138题(复制带随机指针的链表) 题干 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。 例如,如果原链表中有 X 和 Y 两个节点,其中 X.r

奋斗 186

LeetCode刷题--复制带随机指针的链表

复制带随机指针的链表(超级详细)

川子767的博客 491

复制带随机指针的链表(力扣138题Java详解)

LeetCode138:复制带随机指针的链表(Java)

5:00A.M的博客 378
上一篇: 认识数据库事务(Transaction)
下一篇: 浅谈计算机网络的作用
Lb_CsdnJava
博客等级 码龄7年 5粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值