当前位置: 首页 > news >正文

LeetCode 138题解 | 随机链表的复制

随机链表的复制

  • 一、题目链接
  • 二、题目
  • 三、分析
  • 四、代码

一、题目链接

138.随机链表的复制

二、题目

在这里插入图片描述

三、分析

数据结构初阶阶段,为了控制随机指针,我们将拷贝结点链接在原节点的后面解决,后面拷贝节点还得解下来链接,非常麻烦。这里我们直接让{原结点,拷贝结点}建立映射关系放到map中,控制随机指针会非常简单方便,这里体现了map在解决一些问题时的价值,完全是降维打击。

深拷贝一遍原链表,并连接。确定拷贝结点的random指针就需要原结点找到对应的拷贝结点:map< 原结点,拷贝结点>。

四、代码

/*
// Definition for a Node.
class Node {
public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = NULL;random = NULL;}
};
*/class Solution {
public:Node* copyRandomList(Node* head) {map<Node*, Node*> nodeMap;Node* copyhead = nullptr, *copytail = nullptr;Node* cur = head;while (cur){Node* copy = new Node(cur->val);if (copytail == nullptr){copyhead = copytail = copy;}else{copytail->next = copy;copytail = copy;}nodeMap.insert({ cur, copy });// 或者 nodeMap[cur] = copytail;cur = cur->next;}cur = head;Node* copy = copyhead;while (cur){if (cur->random == nullptr){copy->random = nullptr;}else{copy->random = nodeMap[cur->random];}cur = cur->next;copy = copy->next;}return copyhead;}
};
http://www.xdnf.cn/news/1092079.html

相关文章:

  • 5202年安装TensorFlow纪实
  • 向量空间 线性代数
  • 解锁HTML5页面生命周期API:前端开发的新视角
  • 超越公有云:在裸金属服务器上构建低成本、高性能的静态资源服务
  • STM32 使用HAL库获取us时间
  • 【使用Flask基于PaddleOCR3.0开发一个接口 调用时报错RuntimeError: std::exception】
  • HCIP(综合实验)
  • 代码随想录总结
  • css 设置 input 插入光标样式
  • 20250709: WSL+Pycharm 搭建 Python 开发环境
  • C++11 future、promise实现原理
  • 基于Matlab多特征融合的可视化指纹识别系统
  • 微算法科技从量子比特到多级系统,Qudits技术革新引领量子计算新时代
  • 三、Docker常用命令
  • React、Vue、Angular的性能优化与源码解析概述
  • upload-labs靶场通关详解:第19关 条件竞争(二)
  • Mysql组合索引的update在多种情况下的间隙锁的范围(简单来说)
  • 嵌入式调试LOG日志输出(以STM32为例)
  • 自建ELK vs 云商日志服务:成本对比分析
  • [Backlog] Git操作 | 任务数据结构 | Markdown 处理
  • Hugging Face Agents Course unit1笔记
  • 【科研绘图系列】R语言绘制解剖图
  • 解锁DevOps潜力:如何选择合适的CI/CD工作流工具
  • 【RK3568+PG2L50H开发板实验例程】FPGA部分 | 键控LED实验
  • 闲庭信步使用图像验证平台加速FPGA的开发:第六课——测试图案的FPGA实现
  • 01-elasticsearch-搭个简单的window服务-ik分词器-简单使用
  • ECR仓库CloudFormation模板完整指南
  • 网安-SSRF-pikachu
  • 小程序主体变更全攻略:流程、资料与异常处理方案
  • 使用DDR4控制器实现多通道数据读写(十九)