为什么不可以直接将每个节点复制下来?

class Solution {public:Node* copyRandomList(Node* head) {if(head == nullptr) return nullptr;//如果链表为空,直接返回就好Node* cur = head;// 1. 复制各节点,并构建拼接链表while(cur != nullptr) {Node* tmp = new Node(cur->val);//动态内存分配一个新的链表节点tmp->next = cur->next;//记下原来下一个节点的位置cur->next = tmp;//将新的同样的值的节点接在原来的链表节点之后cur = tmp->next;//移动到原来的下一个节点}// 2. 构建各新节点的 random 指向cur = head;while(cur != nullptr) {if(cur->random != nullptr)cur->next->random = cur->random->next;//cur->next是复制后的节点,复制后的节点的随机指针,指向原来的随机指针指向的下一个,因为所有复制后的节点都在原来节点的下一个。cur = cur->next->next;//移动到下一个原来的节点}// 3. 拆分两链表cur = head->next;Node* pre = head, *res = head->next;//标记新的节点的开头while(cur->next != nullptr) {pre->next = pre->next->next;cur->next = cur->next->next;pre = pre->next;cur = cur->next;}pre->next = nullptr; // 单独处理原链表尾节点return res;      // 返回新链表头节点}
};作者:jyd
链接:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof/solution/jian-zhi-offer-35-fu-za-lian-biao-de-fu-zhi-ha-xi-/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

剑指offer35.复杂链表的复制相关推荐

  1. 牛客网-剑指Offer-复杂链表的复制

    题目链接:https://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba?tpId=13&tqId=11178&r ...

  2. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点

  3. 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点

    [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 文章目录 [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 一.遍历 二.双指针 总结 一.遍历 先遍历统计链表长 ...

  4. 剑指offer -- 反转链表

    先摆明重要性 剑指offer -- 反转链表  校招原题 解法一:迭代 翻转 即 将所有节点的next指针指向前驱节点. 由于是单链表,我们在迭代时不能直接找到前驱节点,所以我们需要一个额外的指针保存 ...

  5. 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)

    19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...

  6. 剑指Offer #14 链表中倒数第k个结点(快慢指针) | 图文详解

    题目来源:牛客网-剑指Offer专题 题目地址:链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 节点结构如下: public class ListNode {int val ...

  7. 剑指offer之链表续

    面试题17:合并两个有序链表 这道题用递归,很容易实现,但是一定要注意代码鲁棒性 下面是源码: public static ListNode MergeList(ListNode head1,List ...

  8. 每日一题——剑指 Offer24反转链表

    如果您是第一次看我写的博客,可以给我点个赞并关注我吗,我会持续分享更多有意思的干货. 文章目录 1 题目 2 思路 3 代码 4 小结 1 题目 剑指 Offer 24. 反转链表 定义一个函数,输入 ...

  9. 剑指offer:链表中倒数第k个结点 python实现

    链表中倒数第k个结点 输入一个链表,输出该链表中倒数第k个结点. 解题思路 暴力求解: 判断链表是否为空: 复制链表,遍历一遍统计其长度: 如果长度小于k.则返回None: 否则,返回其长度-k的链表 ...

最新文章

  1. tf.keras.activations.softmax 激活函数 示例
  2. 打包应用和构建Docker镜像(docker在windows上)
  3. [转]C++基础:C++的结构struct
  4. 阿里mysql同步工具otter的docker镜像
  5. 编程实现算术表达式求值_用魔法打败魔法:C++模板元编程实现的scheme元循环求值器...
  6. springboot-数据访问
  7. MIPS下CPU和RAM的数据流动情况详解
  8. es6 async函数的异步迭代器
  9. 滚~滚~滚动条(移动端 二)
  10. Python使用numpy模块实现矩阵和列表的连接操作
  11. 内网分享文件html源码,vue项目分享html页面(服务器只能内网访问)
  12. 【React 】基于Antd Design的CheckBox多选框组件封装
  13. python怎么启动编程_启动Python编程有哪些方法?
  14. 爬虫学习之下载韩寒博客
  15. win10计算机管理员权限删除,win10需要管理员权限删除文件怎么办?获取管理员权限删除文件夹...
  16. 为什么要进行TracePro模拟?
  17. 简历推荐_5位AI产品经理
  18. Workgroup 协议
  19. RocketMQ消息发送源码解析
  20. 程序员的头符合好头的标准吗?

热门文章

  1. 解决Komodo Edit在Windows10 平台上无法运行的问题
  2. 图文正解板卡固态电容!
  3. DSP、Actel转接板标准电路
  4. ffmpeg的本地视频组播
  5. nat123外网访问内网网站FTP数据库远程控制等等
  6. Linux-SSH介绍与认证方式
  7. 手机号加密为150****9665及邮箱加密为8******6@qq.com
  8. celebA数据集(StarGAN)
  9. Java贪吃蛇应用的设计与实现
  10. 工业物联网·新风系统和给排水物联网