LeetCode笔记

白天 夜间 首页 下载 阅读记录
  我的书签   添加书签   移除书签

剑指 35. 复杂链表的复制 🌶

浏览 74 扫码 分享 2023-11-26 12:19:37
  • 剑指 Offer 35. 复杂链表的复制">剑指 Offer 35. 复杂链表的复制

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

    和力扣138. 复制带随机指针的链表一样

    1. //时间On,空间O1
    2. func copyRandomList(head *Node) *Node {
    3. m := make(map[*Node]*Node)
    4. cur := head
    5. for (cur != nil) {
    6. temp := &Node{cur.Val, nil, nil}
    7. m[cur] = temp
    8. cur = cur.Next
    9. }
    10. cur = head
    11. for (cur != nil) {
    12. m[cur].Next = m[cur.Next]
    13. m[cur].Random = m[cur.Random]
    14. cur = cur.Next
    15. }
    16. return m[head]
    17. }

    若有收获,就点个赞吧

    0 人点赞

    上一篇:
    下一篇:
    • 书签
    • 添加书签 移除书签
    • 算法题~必知必会
      • 算法学习之路
    • 数组
      • 基础数组问题
        • 1.两数之和
        • 15.三数之和
        • 18.四数之和
        • 27.移除元素
        • 50. Pow(x, n)
      • 哈希表
        • 哈希集合 set
          • 202. 快乐数
          • 217. 存在重复元素
          • 219. 存在重复元素 II 好
          • 349. 两个数组的交集
          • 350. 两个数组的交集 II
        • 哈希映射 k-v
          • 242. 有效的字母异位词 好
          • 205. 同构字符串
          • 451. 根据字符出现频率排序 难
        • 设计键值
          • 454. 四数相加 II
          • 49. 字母异位词分组 好
          • 149. 直线上最多的点数
        • 查找表和滑动窗口
          • 220. 存在重复元素 III 难
          • 438. 找到字符串中所有字母异位词 难
      • 双指针法
        • 283.移动零 👌
        • 42. 接雨水 👌难
        • 11.盛水最多的容器
      • 滑动窗口
        • 3. 无重复字符的最长子串 👌
        • NC 最长无重复子数组 👌
        • 239. 滑动窗口最大值 难
        • 713. 乘积小于K的子数组
        • 395. 至少有 K 个重复字符的最长子串 难
      • 栈与队列
        • 20.有效的括号 👌
        • 42.接雨水 难
        • 84. 柱状图中最大的矩形 难
        • 85.最大矩形 难
        • 221.最大正方形
      • 字符串处理
        • 3. 无重复字符的最长子串 👌
        • 5. 最长回文子串 👌
        • 8.字符串转换为整数 👌
        • 76. 最小覆盖子串 👌
        • 415. 字符串相加 👌
        • 43. 字符串相乘 👌
        • 151. 翻转字符串里的单词 👌
        • 344. 反转字符串
        • 541. 反转字符串 II
        • 557. 反转字符串中的单词 III
        • 345. 反转字符串中的元音字母
        • 14. 最长公共前缀 好
        • 165. 比较版本号
        • 9.回文数 好
        • 7.整数翻转
        • 28.实现strStr()
        • 459. 重复的子字符串
      • 模拟边界
        • 48. 旋转图像
        • 54. 螺旋矩阵 👌
        • 59. 螺旋矩阵 II
        • 146. LRU 缓存机制 👌难
        • 470. 用 Rand7() 实现 Rand10() ❤️
        • 155.最小栈 👌
        • 232. 用栈实现队列 👌
        • 225. 用队列实现栈 🌶
    • 链表
      • 206.反转链表 👌
        • 92.反转链表2 👌
        • 24. 两两交换链表中的节点
        • 25. K 个一组翻转链表 👌
      • 141.环形链表 👌
        • 142. 环形链表 II 👌
        • 160.相交链表 👌
        • 876. 链表的中间结点
        • 234.回文链表 👌
        • 61.旋转链表
        • 189. 旋转数组 👌
      • 21.合并两个有序链表 👌
        • 23. 合并K个升序链表 👌
        • 2. 两链表值相加
        • 328. 奇偶链表
        • 143.重排链表 👌
        • 148.排序链表 👌
        • 147.插入排序
        • 86.分割链表
        • 138. 复制带随机指针的链表
      • 203.移除链表元素
        • 19. 删除链表的倒数第 N 个结点 👌
        • 83. 删除排序链表中的重复元素 🍳
        • 82. 删除排序链表中的重复元素 II 👌
        • 237.删除链表中的节点 🍳
    • 二叉树
      • 二叉树深度遍历 通解dfs 👌
        • 94.二叉树的中序遍历
        • 144.二叉树的前序遍历
        • 145.二叉树的后序遍历
        • 114. 二叉树展开为链表
      • 104. 二叉树的最大深度 👌
        • 110. 平衡二叉树 👌
        • 111. 二叉树的最小深度
        • 235. 二叉🌲/搜索树的最近公共祖先 👌
        • 654. 最大二叉树
        • 998. 最大二叉树 II
      • 二叉树层序遍历 通解bfs 👌
        • 102. 二叉树的层序遍历 👌
        • 107. 二叉树的层序遍历 II
        • 103. 二叉树的锯齿形层序遍历 👌
      • 199. 二叉树的右视图 👌
        • 404. 左叶子之和
        • 637. 二叉树的层平均值
        • 515. 在每个树行中找最大值
        • 116. 填充每个节点的下一个右侧节点指针
        • 117. 填充每个节点的下一个右侧节点指针 2
      • 构建二叉树 👌
        • 105. 从前序与中序遍历序列构造二叉树 👌
        • 106. 从中序与后序遍历序列构造二叉树
        • 1028. 从先序遍历还原二叉树
        • 297. 二叉树的序列化与反序列化 难
        • 449. 序列化和反序列化二叉搜索树 难
        • 100. 相同的树
        • 101. 对称二叉树
        • 226. 翻转二叉树 👌
        • 617. 合并二叉树
      • 112. 路径总和
        • 113. 路径总和 II 👌
        • 437. 路径总和 III
        • 124. 二叉树中的最大路径和 👌
        • 129. 求根节点到叶节点数字之和 👌
        • 257. 二叉树的所有路径
        • 687. 最长同值路径 难
        • 543. 二叉树的直径
      • 二叉搜索树
        • 96. 不同的二叉搜索树 好
        • 99. 恢复二叉搜索树 难
        • 98. 验证二叉搜索树
        • 108. 将有序数组转换为二叉搜索树 好
        • 109. 有序链表转换二叉搜索树 好
        • 230. 二叉搜索树中第K小的元素 👌
        • 671. 二叉树中第二小的节点
      • N叉树的蛇形遍历
        • 590.N叉树的后序遍历
        • 589.N叉树的前序遍历
        • 429.N叉树的层序遍历
        • 559. N 叉树的最大深度
    • 查找类
      • 二分查找
        • 704. 二分查找 🍳
        • 35. 搜索插入位置 🍳👌
        • 74. 搜索二维矩阵
        • 240. 搜索二维矩阵 II 👌
        • 34. 在排序数组中查找元素的位置 👌
        • 33. 搜索旋转排序数组 👌
        • 81. 搜索旋转排序数组 II
        • 154. 寻找旋转排序数组中的最小值 II 👌
        • 153. 寻找旋转排序数组中的最小值
        • 375. 猜数字大小 II 难
        • 69. x 的平方根 👌
        • 367. 有效的完全平方数
      • 重复数
        • 26. 删除有序数组中的重复项
        • 287. 寻找重复数 好
        • 136. 只出现一次的数字 好
        • 137. 只出现一次的数字 II
        • 260. 只出现一次的数字 III
      • 排序
        • 912.排序数组
        • 剑指 40. 最小的k个数 ❤️
        • 215. 数组中的第K个最大元素 ❤️
        • 347. 前 K 个高频元素 好
        • 剑指 22. 链表中倒数第k个节点
        • 剑指 54. 二叉搜索树的第k大节点
        • 378. 有序矩阵中第 K 小的元素
        • 剑指 45. 数组拆分成最大数
      • 堆 &topK 问题
        • 88. 合并两个有序数组 👌
        • 56. 合并区间
        • 295. 数据流的中位数 😊
        • 4. 寻找两个正序数组的中位数 难
        • 628. 三个数的最大乘积
    • 高级算法
      • 回溯
        • 39. 组合总和
        • 40. 组合总和 II 👌
        • 216. 组合总和 III
        • 77. 组合
        • 46. 全排列 👌难
        • 47. 全排列 II &字符串的排列👌
        • 131. 分割回文串 难
        • 132. 分割回文串 II 难
        • 491. 递增子序列 难
      • 前缀和
        • 169. 多数元素 👌
        • 724. 寻找数组的中心下标
        • 560. 和为K的子数组 好
        • 523. 连续的子数组和 好
        • 974. 和可被 K 整除的子数组
        • 1248. 统计「优美子数组」
        • 238. 除自身以外数组的乘积
      • 贪心思路
        • 55. 跳跃游戏
        • 45. 跳跃游戏 II 难
        • 376. 摆动序列
        • 435. 无重叠区间 好
        • 452. 用最少数量的箭引爆气球
        • 646. 最长数对链
      • 动态规划
        • 爬楼梯问题
          • 509. 斐波那契数
          • 1137. 第 N 个泰波那契数
          • 70. 爬楼梯 👌
          • 746. 使用最小花费爬楼梯
          • 118. 杨辉三角
          • 119. 杨辉三角 II
        • 字符解码问题
          • 91. 解码方法 好
          • 剑指46. 把数字翻译成字符串 好
        • 背包问题
          • 01 🎒问题
            • 416. 分割等和子集 👌
            • 494. 目标和 👌
            • 474. 一和零 难
            • 1049. 最后一块石头的重量 II 难
            • 879. 盈利计划 难
          • 完全🎒问题
            • 139. 单词拆分
            • 140. 单词拆分 II 难
            • 279. 完全平方数
          • 最大值问题
            • 322. 零钱兑换 👌
            • 343. 整数拆分
          • 组合问题
            • 377. 组合总和 Ⅳ 好
            • 518. 零钱兑换 II
        • 路径问题
          • 62. 不同路径
          • 63. 不同路径 II
          • 64. 最小路径和 好
          • 120. 三角形最小路径和 难
          • 97. 交错字符串 👌
        • 打劫问题
          • 198. 打家劫舍
          • 213. 打家劫舍 II 好
          • 337. 打家劫舍 III 好
        • 股票问题
          • 121. 买卖股票的最佳时机 👌
          • 122. 买卖股票的最佳时机 II
          • 309. 最佳买卖股票时机含冷冻期 好
          • 714. 买卖股票的最佳时机含手续费 好
          • 123. 买卖股票的最佳时机 III 难
          • 188. 买卖股票的最佳时机 IV 难
        • 线性DP LIS 递增子序列问题
          • NC91 最长递增子序列 👌
          • 300. 最长递增子序列的长度 👌
          • 53. 最大子序和 👌
          • 152. 乘积最大子数组 ❤
          • 673. 最长递增子序列的个数 ❤
          • 674. 最长连续递增子串 ❤
          • 354. 俄罗斯套娃信封问题
        • 序列DP LCS 公共子串问题
          • NC127 最长公共子串 👌
          • 718. 最长公共子串的长度 👌
          • 1143. 最长公共子序列的长度 👌
          • 115. 不同的子序列的个数 👌
          • 72. 编辑距离 稍难
          • 1035. 不相交的线
          • 583. 两个字符串的删除操作
          • 712. 两个字符串的最小ASCII删除和
          • 44. 通配符匹配
          • 10. 正则表达式匹配 难
        • 区间DP 回文串问题
          • 5. 最长回文子串 好
          • 647. 回文子串
          • 516. 最长回文子序列 好
          • 1312. 成为回文串的次数
          • 312. 戳气球 好
          • 486. 预测赢家
          • 664. 奇怪的打印机 难
    • 剑指offer
      • 数组篇
        • 剑指 03. 数组中重复的数字 👌
        • 剑指 50. 第一个只出现一次的字符
        • 剑指 57. 和为s的两个数字
        • 剑指 57 - II. 和为s的连续正数序列
        • 剑指 21. 数组使奇数于偶数前 👌
        • 剑指 58 - I. 翻转单词顺序 👌
        • 剑指 58 - II. 左旋转字符串
        • 剑指 48. 最长不含重复字符的子字符串 👌
        • 剑指 16. 数值的整数次方
      • 链表篇
        • 剑指 18. 删除链表的节点
        • 剑指 22. 链表中倒数第k个节点
        • 剑指 24. 反转链表
        • 剑指 25. 合并两个排序的链表
        • 剑指 52. 两个链表的第一个公共节点
        • 剑指 35. 复杂链表的复制 🌶
      • 二叉树篇
        • 剑指 32 -I II. 从上到下打印二叉树 👌
        • 剑指 32 - III. Z字形打印二叉树 👌
        • 剑指 34. 和为定值的路径 👌
        • 剑指 07. 重建二叉树 👌
        • 剑指 26. 树的子结构
        • 剑指 27. 二叉树的镜像 👌
        • 剑指 28. 对称的二叉树 🍳
        • 剑指 55 - I. 二叉树的深度 🍳
        • 剑指 55 - II. 平衡二叉树 ✂️
        • 剑指 68 . 二叉树的最近公共祖先 🍳
        • 剑指 54. 二叉搜索树的第k大节点 👌
        • 剑指 33. 二叉搜索树的后序遍历序列
        • 剑指 37. 序列化二叉树 😴
      • 查找与排序篇
        • 剑指 04. 二维数组中的查找 👌
        • 剑指 11. 旋转数组的最小数字 👌
        • 剑指 53 - I. 在排序数组中查找数字 🍳
        • 剑指 53 - II. 0~n-1中缺失的数字
        • 剑指 41. 数据流中的中位数 难
        • 剑指 45. 把数组排成最小的数
      • 栈和队列篇
        • 剑指 09. 用两个栈实现队列
        • 剑指 30. 包含min函数的栈
        • 剑指 59 - I. 滑动窗口的最大值
      • 动态规划篇
        • 剑指 10- I. 斐波那契数列
        • 剑指 10- II. 青蛙跳台阶问题
        • 剑指 46. 把数字翻译成字符串 好
        • 剑指 42. 连续子数组的最大和
        • 剑指 47. 礼物的最大价值
        • 剑指 63. 股票的最大利润
      • 数学篇
        • 趣味游戏
          • 剑指 14- I. 剪绳子
          • 剑指 39. 数组中出现次数超过一半的数字
          • 剑指 16. 数值的整数次方
          • 剑指 51. 数组中的逆序对 难
          • 剑指 49. 丑数 🌶
          • 剑指 14- II. 剪绳子 II 🌶
          • 剑指 61. 扑克牌中的顺子 🌶
          • 剑指 64. 求1 2 … n 🌶
          • 剑指 60. n个骰子的点数 🌶
          • 剑指 43. 1~n 整数中 1 出现的次数 🌶
          • 剑指 44. 数字序列中某一位的数字 🌶
          • 剑指 13. 机器人的运动范围 🌶
          • 剑指 66. 构建乘积数组 🌶
          • 剑指 62. 圆圈中最后剩下的数字 🌶
        • 位运算
          • 剑指 15. 二进制中1的个数
          • 剑指 56 - I. 数组中数字出现的次数
          • 剑指 56 - II. 数组中数字出现的次数 II
          • 剑指 65. 不用加减乘除做加法
      • 模拟&设计篇
        • 剑指 29. 顺时针打印矩阵
        • 剑指 31. 栈的压入、弹出序列
        • 剑指 06. 从尾到头打印链表
    • 算法の应用
      • 双向链表应用
      • dp应用:拼写纠错 -编辑距离
    • 自我介绍
    • 招聘信息
    暂无相关搜索结果!

      让时间为你证明

      展开/收起文章目录

      分享,让知识传承更久远

      文章二维码

      手机扫一扫,轻松掌上读

      文档下载

      请下载您需要的格式的文档,随时随地,享受汲取知识的乐趣!
      PDF文档 EPUB文档 MOBI文档

      书签列表

        阅读记录

        阅读进度: 0.00% ( 0/0 ) 重置阅读进度

          思维导图备注