leetcode 剑指 Offer 35. 复杂链表的复制
题意
将一个链表复制一遍后输出,这个链表除了next指针外,还有一个random指针,随机指向链表中的节点(包括自身或者NULL)。
解法
生成一个新的链表,然后根据新老链表同时循环遍历,找到当前老链表的random是哪个节点,这时新链表也指向新链表中相应的节点。
别人的解法1:
用map将每个节点与新节点关联,然后根据老节点用map得到新节点,再根据老节点的next用map得到当前新节点的next,将其关联。同样可以用此方法得到新节点random,最后返回新节点的头部(用map通过老节点获取到)。
Node *original = head;while(original){m1[original] = new Node(original->val);original = original->next;}original = head;while(original){if(original->next){m1[original]->next = m1[original->next];}if(original->random){m1[original]->random = m1[original->random];}original = original->next;}
别人的解法2:
在原链表上每个节点后都新增一个值相同的节点。
然后给每一个复制节点的random赋值,原节点的random的下一个即为复制节点的random。
cur->next->random=cur->random->next;
然后将两个链表分开(这里相当于处理了next),得到新链表。
总结:
这里主要的难点是如何快速地处理random。自己写的效率有点低下。没有利用到链表的性质,每个节点的地址是不变的。
leetcode 剑指 Offer 35. 复杂链表的复制相关推荐
- 【LeetCode 剑指 Offer 35. 复杂链表的复制(中等)】
题目: 请实现 copyRandomList 函数,复制一个复杂链表.在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null. ...
- 【LeetCode】剑指 Offer 35. 复杂链表的复制
[LeetCode]剑指 Offer 35. 复杂链表的复制 文章目录 [LeetCode]剑指 Offer 35. 复杂链表的复制 package offer;import java.util.Ar ...
- 剑指 Offer 35. 复杂链表的复制
剑指 Offer 35. 复杂链表的复制 题目 题目链接 解题思路 题目理解 解题思路 具体代码 题目 题目链接 https://leetcode-cn.com/problems/fu-za-lian ...
- 【三次优化】剑指 Offer 35. 复杂链表的复制
立志用最少代码做最高效的表达 请实现 copyRandomList 函数,复制一个复杂链表.在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意 ...
- 剑指offer——35复杂链表的复制
这题很是巧妙. 突破了常规思维. 竟然可以把传入进来的链表和复制的链表链在一起.然后再算出slibling指针.最后在分离. 直接把空间复杂度变为O(1)了. 很巧妙,很实用. 题目: 请实现函数Co ...
- LeetCode笔记】剑指 Offer 35. 复杂链表的复制(Java、哈希表、原地算法)
文章目录 题目描述 思路 && 代码 1. 哈希表法 2. 原地算法 二刷 题目描述 主要有两个考虑点: 不能改变原链表 新链表赋予 next.random 时,复制结点不一定存在 思 ...
- 剑指 Offer 35. 复杂链表的复制(哈希/衍生拆分图解)
题目描述 请实现 copyRandomList 函数,复制一个复杂链表.在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null. ...
- 【算法】剑指 Offer 35. 复杂链表的复制 【重刷】
1.概述 地址:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof/ 请实现 copyRandomList 函数,复制一个复 ...
- 《剑指offer》-- 复杂链表的复制、字符串的排列、数组中出现次数超过一半的数字、连续子数组的最大和
一.复杂链表的复制: 参考牛客网的chancy:https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba 1 ...
最新文章
- Mysql如何创建短索引(前缀索引)
- 蓝桥杯 - 牌型种数(dfs)
- base32php,ThinkPHP6.0使用extends Base方式处理后台登录逻辑
- 20190909 SpringBoot集成Swagger
- 深入浅出,解读阿里云云盾WAF防护功能
- 基于C#和DGAL包实现栅格影像的读取和显示
- Linux主流架构运维工作简单剖
- 云-PC-matlab-物联网及其它
- 虚拟机及CentOS7各个版本镜像下载地址
- 基于yolo3 与crnn 实现中文自然场景文字检测及识别
- ArcGIS/ArcMAP操作录屏视频及相关实验数据(行政界线、地名点、道路路网、水系、乡镇/街道面等)
- 上海瀚示中文显示电子拣货标签 智能仓储物流工匠级革新
- JavaScript 数组方法every()
- 3nf mysql表_数据库三大范式(1NF,2NF,3NF)及ER图
- Invalid HTTP method: PATCH executing PATCH
- day fit into much one too_2018年广东省高考英语听说考试真题A-E(附答案)
- 12个最真实的人型机器人,肉眼几乎无法区分,你见过几个?【楚才国科】
- 解决raw.githubusercontent.com地址DNS污染的方法参考
- idcardweb装入失败_新中新身份证读卡器接口API使用
- NGUI渲染机制——从顶点和UV说起
热门文章
- 期权实战交易最重要的经验
- 伺服驱动器中的补偿算法简要介绍
- java 判断输入的是正数还是0还是负数(正数-10,负数+10)
- 用scikit-learn 训练SVM的例子, clf.fit() clf.predict() 的作用
- 零信任:从制度信任到机器信任,区块链信任机制带来可信链接
- amlogic红外遥控器适配
- 你了解“暗数据”吗?
- xv6操作系统中添加用户应用程序
- EmlBuilder:一款超轻量级的EML格式电子邮件阅读和编辑工具
- 椎体压缩性骨折与骨密度:CT图像的自动检测与分类