| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 138. 复制带随机指针的链表 -> 正文阅读 |
|
[数据结构与算法]138. 复制带随机指针的链表 |
2021-07-22 LeetCode每日一题链接:https://leetcode-cn.com/problems/copy-list-with-random-pointer/ 标签:哈希表、链表
给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。 例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。那么在复制链表中对应的两个节点 x 和 y ,同样有 x.random --> y 。 返回复制链表的头节点。 用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:
你的代码 只 接受原链表的头节点 head 作为传入参数。 示例 1:
示例 2:
示例 3:
示例 4:
提示:
首先明白【深拷贝】是什么。深拷贝就是拷贝的对象和原对象地址不一样,改变拷贝对象,不会影响原对象的值。而【浅拷贝】就是改变拷贝对象的值,原对象的值也会随着改变。 所以不能单纯的遍历赋值,不然指向的还是原对象的地址。如果这里不带random指针就好办了,遍历,然后new一个新的node出来就行了。但有了这个random指针,你就不能直接new了,应该你不知道它指向哪个节点。 我的思路是先不管random指针,先把所有新的节点new出来,后面再来补充random,具体请看代码。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 10:03:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |