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

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;}
}
http://www.xdnf.cn/news/14503.html

相关文章:

  • 技术突破与落地应用:端到端 2.0 时代辅助驾驶TOP10 论文深度拆解系列【第四篇(排名不分先后)】
  • 【C++】模板入门
  • LeetCode HOT 100
  • C语言空指针异常在Java中的解决方案
  • 智慧流水线在esop数字工厂中的作用?
  • GO语言---短变量声明
  • 手写简版React-router
  • DeepSeek提示词指南:从基础到高阶的全面解析
  • 160. 相交链表
  • MGR集群场景恢复处理
  • LoRA 与传统矩阵分解的比较
  • Ubuntu24.04一键安装ROS2
  • PoE供电异常如何排查?
  • React-router 基础使用
  • Markdown 使用 mermaid 绘制图
  • 基于Webserver的数据采集
  • Redis Cluster集群机制原理
  • 安卓9.0系统修改定制化____支持安卓9.0系统修改的一些解包 打包工具解析 基础篇 三
  • TC3xx学习笔记-启动过程详解(二)
  • 最新文章 支持一下!!
  • Datawhale---AI办公实践与应用---Cpt2-用讯飞智文做一个小案例
  • 一个高质量的社交电商APP客户端UI解决方案
  • Nginx 配置中·IP地址变量
  • 深度学习的优化⽅法
  • 李沐--动手学深度学习 LSTM
  • 父亲节:传承孝道,守护亲情
  • MySQL 数据库自动备份批处理工具介绍
  • Vue 项目路由模式全解析:从 hash 到 history 再到 abstract
  • Podman 安装与运行 Nginx 容器完整指南(含访问验证)
  • 北斗导航 | 基于matlab的提升卫星导航单点定位精度的算法总结