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

力扣刷题Day 34:随机链表的复制(138)

1.题目描述

2.思路

方法1:直接copy.deepcopy就可以了。

方法2:先遍历链表将结点及其索引存入node_dict,再遍历链表将当前结点索引与random的索引存入random_dict,然后遍历链表得到random均为空的新链表,遍历新链表将结点及其索引存入new_node_dict,最后根据random_dict修改新链表的random。

3.代码(Python3)

方法1:

class Solution:def copyRandomList(self, head: 'Optional[Node]') -> 'Optional[Node]':return copy.deepcopy(head)

方法2:

class Solution:def copyRandomList(self, head: 'Optional[Node]') -> 'Optional[Node]':# 原链表的结点索引node = headnode_dict = {}idx = 0while node:node_dict[node] = idxnode = node.nextidx += 1# 原链表的random与idx对应关系node = headrandom_dict = {}idx = 0while node:random_dict[idx] = node_dict[node.random] if node.random else -1node = node.nextidx += 1# 得到除了random的拷贝new_dummy = Node(0)node, new_node = head, new_dummywhile node:new_node.next = Node(node.val)node, new_node = node.next, new_node.next# 新链表的结点索引new_node = new_dummy.nextnew_node_dict = {}idx = 0while new_node:new_node_dict[idx] = new_nodenew_node = new_node.nextidx += 1# 根据原链表里random与idx的对应关系修改新链表for key, value in random_dict.items():if value != -1:new_node_dict[key].random = new_node_dict[value]return new_dummy.next

4.执行情况

方法1:

方法2:

5.感想

方法二的代码虽然繁琐但效率比方法一要高。

http://www.xdnf.cn/news/4654.html

相关文章:

  • MySQL大数据量查询优化
  • angular的cdk组件库
  • 苍穹外卖(订单状态定时处理、来单提醒和客户催单)
  • hadoop中的序列化和反序列化(4)
  • 快连LetsVPN安装指南
  • LeetCode20_有效的括号
  • 第2章 算法分析基础
  • 记录一下spring-cloud-starter-alibaba-nacos-config 2023.0.3.2与springboot版本及配置问题
  • 如何创建RDD
  • 【AI News | 20250507】每日AI进展
  • MySQL中为什么使用B+树结构、B+树和普通的平衡树的区别
  • Spark jdbc写入崖山等国产数据库失败问题
  • Linux/AndroidOS中进程间的通信线程间的同步 - 共享内存
  • AI 实践探索:辅助生成测试用例
  • 高性能轻量级Rust HTTP服务器框架Hyperlane:开启网络服务开发新体验
  • NLP核心技术解析:大模型与分词工具的协同工作原理
  • 排序算法——桶排序
  • 注意力机制(Attention)
  • 【关于ESP8266下载固件库的问题】
  • C++ 析构函数
  • 【Ollama】docker离线部署Ollama+deepseek
  • 从机器人到调度平台:超低延迟RTMP|RTSP播放器系统级部署之道
  • DeepSeek 入门:从注册到首轮对话全流程
  • Mysql如何完成数据的增删改查(详解从0到1)
  • 打造个人知识库,wsl+ollama部署deepseek与vscode集成
  • NetBox Docker 全功能部署方案(Ubuntu 22.04 + Docker)
  • k8s 中 deployment 管理的多个 pod 构成集群吗
  • PostgreSQL 查询历史最大进程数方法
  • 商汤科技前端面试题及参考答案
  • 服务器上机用到的设备