| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> leetcode 138.复制带随机指针的链表 -> 正文阅读 |
|
[数据结构与算法]leetcode 138.复制带随机指针的链表 |
给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。 复制链表中的指针都不应指向原链表中的节点 。 思路: 1.复制原链表的所有结点,将新结点各自插入到原结点的后面
2.根据原结点的random,找到复制结点的random 原链表中的第一个结点,7->random = NULL,那么复制结点7->random也是NULL 原链表中的第二个结点,13->random = 7,那么复制结点13->random是复制节点7,也就是原链表的结点13->random->next copyNode = cur->next,copyNode->random = cur->random->next, 原链表中的第三个结点,11->random = 1,那么复制节点11->random是复制结点1,也就是原链表的结点11->random->next 同理,可以得到剩下几个复制节点的random,如下图所示 3.把复制结点解下来,并恢复原链表 初始条件,定义两个指针,分别表示复制链表的头结点和尾结点 复制链表的第一个结点,copyHead记住头结点位置,不再改变,copyHead= copyTail= copy,cur->next = next cur继续向后走,cur= cur->next 直到cur == NULL,循环结束 拆分完成
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/26 18:40:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |