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

力扣-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.dtcms.com/a/185681.html

相关文章:

  • Aware和InitializingBean接口以及@Autowired注解失效分析
  • linux-驱动开发之设备树详解(RK平台为例)
  • 《Python星球日记》 第58天:Transformer 与 BERT
  • 快解析为TPDDNS用户提供免费替换服务
  • 2025年SDK游戏盾技术深度解析:AI赋能下的DDoS/CC攻击防御革命
  • 《Effective Python》第1章 Pythonic 思维详解——深入理解流程控制中的解构利器match
  • Baumer工业相机堡盟工业相机在使用光源时如何选择蓝光还是红光
  • Lynx-字节跳动跨平台框架多端兼容Android, iOS, Web 原生渲染
  • 力扣210(拓扑排序)
  • VLM-RL:用于安全自动驾驶的统一视觉语言模型和强化学习框架——论文阅读
  • 互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-3
  • DVWA在线靶场-xss部分
  • DeepSeek-R1-Distill-Qwen-1.5B代表什么含义?
  • 26考研|数学分析:函数列与函数项级数
  • 对接马来西亚股票数据API接口文档
  • 如何使用Selenium?
  • Linux操作系统从入门到实战(六)Linux开发工具(上)详细介绍什么是软件包管理器,Linux下如何进行软件和软件包的安装、升级与卸载
  • 前端上传el-upload、原生input本地文件pdf格式(纯前端预览本地文件不走后端接口)
  • C++ 状态模式详解
  • React Native踩坑实录:解决NativeBase Radio组件在Android上的兼容性问题
  • 在Taro中开发一个跨端Svg组件,同时支持小程序、H5、React Native
  • 【PmHub后端篇】Skywalking:性能监控与分布式追踪的利器
  • 按指定位置或关键字批量删除工作表-Excel易用宝
  • 颠覆工业通讯:PROFINET转EtherCAT网关打造汇川变频器的数据传输革命
  • 可灵 AI:开启 AI 视频创作新时代
  • mysql配置输入错误密码3次后锁定60s
  • 告别卡顿,图片查看界的“速度与激情”
  • Jenkins:库博静态工具CI/CD 的卓越之选
  • idea中ctrl+/注释,总是出现在最前行
  • MySQL 分页查询优化