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

leetcode138-随机链表的复制

leetcode 138
在这里插入图片描述

思路

利用哈希表解答

使用哈希表来建立原节点和复制节点之间的映射关系,具体思路如下:

  • 第一次遍历原链表:为每个原节点创建一个对应的复制节点,并将原节点和复制节点的映射存入哈希表中。同时,将复制节点连接成一个新链表
  • 第二次遍历原链表:通过哈希表查找每个原节点的random指针所指向的节点,并为对应的复制节点设置random指针
关键步骤

创建复制节点并建立映射

  • 遍历原链表,为每个节点创建值相同的新节点
  • 使用Map存储原节点到新节点的映射关系
  • 将新节点依次连接成一个新链表

设置随机指针

  • 再次遍历原链表,对于每个节点的random指针
  • 通过哈希表查找对应的复制节点,并设置新链表中对应节点的random指针

时间复杂度:O(n) 空间复杂度: O(n)

实现

var copyRandomList = function (head) {let cur = head;let dummy = new Nodelist();let copyCur = dummy;const map = new Map();while (cur) {const val = cur.val;copyCur.next = new Nodelist(val);map.set(cur, copyCur.next);cur = cur.next;copyCur = copyCur.next;}cur = head, copyCur = dummy.next;while (cur) {copyCur.random = map.get(cur.random) || null;cur = cur.next;copyCur = copyCur.next;}return dummy.next;
};class Nodelist {constructor(val) {this.val = val;this.next = null;this.random = null;}
}

相关文章:

  • 《k8s 部署》常见报错类型1
  • 前端面试九之Vue Router
  • 【驱动设计的硬件基础】I²C
  • scikit-image (skimage) 完整API参考文档
  • AI是什么?大模型、语料、训练、推理、机器学习、神经网络等专业名词如何关联
  • cuda编程笔记(2.5)--简易的应用代码
  • 5.5.2_1并查集
  • Vue3优质动画库推荐
  • 在windows10上安装nvm以及配置环境
  • Claude Code 是什么?
  • 刷leetcode hot100返航版--字符串6/15
  • python动态蓝色蝴蝶爱心
  • 目标分割数据集大全「包含分割数据标注+训练脚本」 (持续原地更新)
  • 设计模式(10)——创建型模式之抽象工厂
  • Python 文件操作详解
  • 电脑上的.ssh目录只做什么的
  • AMD Pensando Pollara 400Gbps网卡深度解析:超级以太网重塑AI集群网络架构
  • linux多线程之POSIX信号量
  • Python变量与数据类型全解析
  • AI视野:视频处理AI排行榜Top10 | 2025年05月
  • 网站开发协议范本/谷歌关键词热度查询
  • 个人网站内容有哪些内容/南京广告宣传公司seo
  • 营销型网站套餐/谷歌浏览器下载电脑版
  • 白酒pc网站建设方案/2024年新冠疫情最新消息今天
  • 门户网站策划书/重庆seo整站优化外包服务
  • 上海小程序开发设计/萌新seo