【LeetCode】剑指 Offer 35. 复杂链表的复制

文章目录

  • 【LeetCode】剑指 Offer 35. 复杂链表的复制


package offer;import java.util.ArrayList;
import java.util.HashMap;//定义节点
class Node{int value;Node next;Node random;public Node(int value){this.value = value;this.next = null;this.random = null;}@Overridepublic String toString() {return "["+ value +","+ random +"]";}
}public class Solution35 {public static void main(String[] args) {Node node1 = new Node(3);Node node2 = new Node(3);Node node3 = new Node(3);node1.next = node2;node2.next = node3;node2.random = node1;Solution35 solution = new Solution35();Node result = solution.method(node1);while(result != null){System.out.print(result);if(result.next != null){System.out.print(",");}result = result.next;}}private Node method(Node head){if(head == null) return null;HashMap<Node, Node> map = new HashMap<>();Node cur = head;//将原节点和新节点的映射存入 HashMapwhile(cur != null){map.put(cur, new Node(cur.value));cur = cur.next;}cur = head;//为新节点的 next 和 random 赋值while(cur != null){map.get(cur).next = map.get(cur.next);map.get(cur).random = map.get(cur.random);cur = cur.next;}return map.get(head);}
}//时间复杂度为 O(n)
//空间复杂度为 O(1)

【LeetCode】剑指 Offer 35. 复杂链表的复制相关推荐

  1. 【LeetCode 剑指 Offer 35. 复杂链表的复制(中等)】

    题目: 请实现 copyRandomList 函数,复制一个复杂链表.在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null. ...

  2. leetcode 剑指 Offer 35. 复杂链表的复制

    题意 将一个链表复制一遍后输出,这个链表除了next指针外,还有一个random指针,随机指向链表中的节点(包括自身或者NULL). 解法 生成一个新的链表,然后根据新老链表同时循环遍历,找到当前老链 ...

  3. 剑指 Offer 35. 复杂链表的复制

    剑指 Offer 35. 复杂链表的复制 题目 题目链接 解题思路 题目理解 解题思路 具体代码 题目 题目链接 https://leetcode-cn.com/problems/fu-za-lian ...

  4. 【三次优化】剑指 Offer 35. 复杂链表的复制

    立志用最少代码做最高效的表达 请实现 copyRandomList 函数,复制一个复杂链表.在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意 ...

  5. 剑指offer——35复杂链表的复制

    这题很是巧妙. 突破了常规思维. 竟然可以把传入进来的链表和复制的链表链在一起.然后再算出slibling指针.最后在分离. 直接把空间复杂度变为O(1)了. 很巧妙,很实用. 题目: 请实现函数Co ...

  6. LeetCode笔记】剑指 Offer 35. 复杂链表的复制(Java、哈希表、原地算法)

    文章目录 题目描述 思路 && 代码 1. 哈希表法 2. 原地算法 二刷 题目描述 主要有两个考虑点: 不能改变原链表 新链表赋予 next.random 时,复制结点不一定存在 思 ...

  7. 剑指 Offer 35. 复杂链表的复制(哈希/衍生拆分图解)

    题目描述 请实现 copyRandomList 函数,复制一个复杂链表.在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null. ...

  8. 【算法】剑指 Offer 35. 复杂链表的复制 【重刷】

    1.概述 地址:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof/ 请实现 copyRandomList 函数,复制一个复 ...

  9. 《剑指offer》-- 复杂链表的复制、字符串的排列、数组中出现次数超过一半的数字、连续子数组的最大和

    一.复杂链表的复制: 参考牛客网的chancy:https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba 1 ...

最新文章

  1. python批量改动指定文件夹文件名称
  2. mysql 创建定时器
  3. oracle某用户历史sql语句,查看oracle 用户执行的sql语句历史记录
  4. 2021 年前端学习路线总结
  5. 素数类型C语言题目总结
  6. 艰难环境下,面腾讯、美团、商汤科技等七家大厂前端有感
  7. 按照拼音对数组中的中文字符串排序的算法
  8. Vue项目axios在IE浏览器报promise错误的解决办法
  9. web 自动化测试(入门篇)
  10. C/C++ 算法分析与设计:递归(年龄问题)
  11. 前阿里云大数据架构师:想进去阿里云需要掌握什么技能
  12. 如何关闭对Instagram帖子的评论
  13. 【无标题】贪心算法-MATLAB实现
  14. 推荐10款Java程序员使用的单元测试工具
  15. 刷脸门禁和无人清扫只是前戏,百度大脑要做最智能的地产物业
  16. 【Oracle】oracle 计算当月有多少个星期天、星期六、星期一
  17. 黑苹果NVIDIA显卡驱动程序【 WebDriver-387.10.10.10.40.123+支持 macOS 10.13.6 High Sierra (17G6029)版本】
  18. 计算机基础文献检索考核,《文献检索与利用》教学大纲(理)
  19. 【华为ICT大赛2022-2023-----云赛道】实验沙箱-注意事项-实验坑
  20. [CF1500B]Two chandeliers

热门文章

  1. mysql数据类型的学习心得_MySQL自学总结 (一到四章)
  2. c语言位运算负数的实例_JavaScript基础教程(四)二进制位运算
  3. jquery常用技巧及常用方法列表
  4. python爬虫url参数有随机数、如何确定是正确的链接_Python爬虫知识点——请求
  5. python吃显卡还是内存条_玩天际线吃U还是吃显卡或者还是吃内存?--天际线配置需求个人见解...
  6. html5游戏面试题及答案,HTML5常见面试题及答案(二)
  7. axure怎样24位bmp输出_【白皮书】使用24位设备进行基础应变测量
  8. (45)System Verilog 类中变量随机激励约束语法
  9. Vivado设计DDR3接口生成bit报错解决
  10. 东师2016年秋季计算机基础,东师2016年秋季《计算机基础》期末考核答案(1).doc