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

力扣-138.随机链表的复制

题目描述

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。

构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点

class Solution {
public:Node *copyRandomList(Node *head) {if (head == NULL) {return head;}//复制各节点,并构建拼接链表,形如7->7->3->3->...Node *cur = head;while (cur) {Node *tmp = new Node(cur->val);tmp->next = cur->next;cur->next = tmp;cur = cur->next->next;}//构建各新节点的 random 指向cur = head;while (cur) {if (cur->random != NULL)//条件不要忘记cur->next->random = cur->random->next;//这行理解了关键逻辑就理解了cur = cur->next->next;}//拆分两链表cur = head->next;Node *pre = head;Node *res = cur;while (cur->next) {pre->next = cur->next;cur->next = cur->next->next;pre = pre->next;cur = cur->next;}pre->next = nullptr; // 单独处理原链表尾节点,因为不能修改原链表,否则报错return res;}
};

小结:没做过基本想不到这么巧妙的方法,只能寄希望于下次刷到可以顺利做出来,也是看了题解才勉强完成。主要思路是拼接+拆分,需要注意的点都写在注释里,还有一种哈希表解法没有看,从现在开始想用Java同步二刷hot100,我会新建一个专栏,欢迎关注阅读。

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

相关文章:

  • js fetch流式请求 AI动态生成文本,实现逐字生成渲染效果
  • 个人博客系统测试报告
  • 常用激活函数总结
  • websocketpp 安装及使用
  • 基于OpenCV的人脸识别:Haar级联分类器
  • SATA—Link层状态机
  • Gmssl库的aes算法效率问题
  • 家具制造行业的现状 质检LIMS如何赋能家具制造企业质检升级
  • 见多识广7:KAIST(韩国高等科学技术院)——关注AI加速器方向
  • 复盘与导出工具最新版V23.0版本更新--新增韭菜异动轮动功能
  • 基于 Python 的后端开发学习路线
  • 【AI】mcp server是什么玩意儿
  • 【Linux网络】 HTTP cookie与session
  • DeepPrep:深度学习提升神经影像预处理
  • LeetCode算法题:电话号码的字母组合
  • Bodhi linux 系统详解
  • 分析红黑树工程实用的特点
  • 智能手表测试计划文档(软/硬件)
  • 读取.ini后缀类型的马达配置文件并进行赋值
  • AtCoder Beginner Contest 405(ABCD)
  • 搭建高可用及负载均衡的Redis
  • C++四种类型转换:static_cast、 dynamic_cast const cast、 reinterpret_cast
  • 详解RabbitMQ工作模式之通配符模式
  • 3.9/Q2,GBD数据库最新文章解读
  • 珠海金山2007逆向分析挑战赛-CrackMe看雪(九连环)(writeup)
  • 【运维】MacOS蓝牙故障排查与修复指南
  • 大地网接地电阻测试的必要性
  • Python如何使用进行风险管理和投资组合优化
  • 2025智能体基建在进化过程中带来的质变
  • 国外付费AI软件充值教程