力扣(LeetCode)138. 复制带随机指针的链表(C++)

news2025/1/12 4:50:04

模拟

  1. 第一趟遍历,在结点的右侧复制映射。
  2. 第二趟遍历,复制 r a n d o m random random
  3. 第三趟遍历,将链表中的映射结点取出作为新链表。

pp
初始链表如图①。

有必要说明,原结点如 1 1 1~ 5 5 5 ,映射结点就是 1 ‘ 1` 1~ 5 ‘ 5` 5
复制映射的结果是,原结点的 n e x t next next 指向映射结点,如图②。

有了映射链表后, r a n d o m random random n e x t next next 的关系请看图②, 2 − 4 2-4 24 2 ‘ − 4 ‘ 2`-4` 24 r a n d o m random random 指向自己理解。(理解了,请看代码)

我们的映射结点经过被映射,复制 r a n d o m random random 这两步后,已经形成结点的深拷贝,现在需要把结点按顺序取出 (看图看代码) 。

至此三次遍历生成随机结点链表的深拷贝。请读者多加思考,复写代码吧~

class Solution {
public:
    Node* copyRandomList(Node* head) {
        for(auto p = head;p;p=p->next->next) { //在结点右侧复制映射。
            auto q = new Node(p->val);
            q->next = p->next;
            p->next = q;
        }
        for(auto p = head;p;p=p->next->next) //复制 random
            if(p->random) p->next->random = p->random->next;
        auto dummy = new Node(-1) , cur = dummy;
        for(auto p = head;p;p = p->next){ //断链
            cur = cur->next = p->next;
            p->next = p->next->next;
        }
        return dummy->next;
    }
};
  1. 时间复杂度 : O ( n ) O(n) O(n) ,三趟遍历的时间复杂度 O ( n ) O(n) O(n)
  2. 空间复杂度 : O ( 1 ) O(1) O(1) ,只使用常数级空间 。

AC

AC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习笔记--截止12.9 CVAT使用方法、STCN代码使用方法、bitahub使用方法

CVAT使用方法(12.5-12.7) 对学长来说是一个标注数据集的好工具,但对我来说是个新的知识点 使用这个工具,我们要得到一张有蒙层的图片 然后CVAT的使用方法(网上居然没有教程,,,官网的…

金山表单结果如何自动通知至钉钉

金山表单内置了丰富的模版,从表单、接龙、问卷、投票,可以满足你各种表单数据数据收集的需求。但是很多用户经常也会有一个痛点,通过金山表单收集的信息,如何才能实时通知企业微信/钉钉/飞书呢? 比如防疫登记、安全复工…

茶馆无线wifi短信认证方案

茶馆提供公共的无线wifi上网服务,需对用户进行实名认证。手机短信实名认证以其用户体验、综合成本等优势,成为茶馆无线上网认证的首选方案。 一、茶馆如何实现无线wifi短信认证 茶馆要实现访客无线上网短信认证功能,需要借助上网行为管理设备…

SuperMap云套件发布达梦工作空间数据

作者:John GIS云套件和经典版iServer一样可以发布DM数据,同样也和iServer一样需要引入DM依赖包,需要对云套件的ispeco-dashboard-api 和 gisapp-* 镜像进行补充DM依赖包,其补充DM主要有以下几个步骤,本文将通过ispeco-…

DX12_Mesh Shader Instance

之前我们介绍过DX12_Mesh Shaders Render,但是基于MeshShader我们能做的还很多,比如实例化和剔除(视锥与遮挡),这也就直接解决了现在主流的GPU-Driven管线方法,是不是一举两得了(毕竟MS就是变种…

【产品分析】amazon数据采集亚马逊数据分析评论分析竞品

哈喽,大家好!这是写【产品分析】专栏的第三篇文章了,目前国内市场过于饱和,产品竞争压力较大,不少商家开始了海外淘金 采集介绍 通过观察国外平台蓝海关键词,发现Gun这类商品在平台较受欢迎。本文将采集呀…

热门的智慧养老产品有哪些?解读新政策后的超全资料整合

近年来,面对人口老龄化的压力,我国开始着重发展智慧养老。 工信部等部门联合制定了《智慧健康养老产业发展行动计划(2021—2025年)》,针对老年人群多层次、多样化的健康养老需求,重点围绕技术创新应用、加大产品供给、数据平台建…

【数据结构】深度剖析堆排序、TopK问题

文章目录 1、TopK问题 主要思路 程序代码 优越性 2.堆排序 主要思路 程序代码 时间复杂度 堆这个结构实际上还是很有用的,比如TopK问题。 现在有N个数,要求找最大的前K个。很多人会觉得,这不是很容易吗,排序然后取前K个即…

RabbitMQ之发布确认

目录 8.1. 发布确认 springboot 版本 8.1.1. 确认机制方案 8.1.2. 代码架构图 8.1.3. 配置文件 8.1.4. 添加配置类 8.1.5. 消息生产者 8.1.6. 回调接口 8.1.7. 消息消费者 8.1.8. 结果分析 8.2. 回退消息 8.2.1. Mandatory 参数 8.2.2. 消息生产者代码 8.2.3. 回调…

全国青少年软件编程(Scratch)等级考试二级考试真题2022年3月——持续更新.....

电子学会202203Scratch二级真题及参考答案 1.红框中加入哪个选项积木,不能阻止气球下落?( ) A. B. C. D. 正确答案:D 答案解析: 2.运行下列程序,会画出?( ) A.一条横的实线<

flex布局父项属性

flex布局父项属性 1、flex-direction设置主轴方向 源代码 主轴与侧轴在flex布局中&#xff0c;是分为主轴和侧轴两个方向&#xff0c;同样的叫法有&#xff1a;行和列、x轴和y轴 默认主轴方向就是x轴方向&#xff0c;水平向右 默认侧轴方向就是y轴方向&#xff0c;水平向下 属…

字节京东互联网大厂为什么使用 clickhouse

ClickHouse 开源于 2016 年&#xff0c;是一款开源列式存储的分析型数据库&#xff0c;相较业界 OLAP 数据库系统&#xff0c;其最核心优势就是极致的查询性能。它实现了向量化执行和 SIMD 指令&#xff0c;对内存中的列式数据&#xff0c;一个 batch 调用一次 SIMD 指令&#…

Android-实现View模糊效果

首先&#xff0c;关于在Android上绘图的一句话 在最基本的层面上&#xff0c;Android 上的可视元素&#xff08;如按钮、文本和其他 UI 或自定义元素&#xff09;通常是通过调用 Canvas API 绘制的&#xff0c;如 drawLine()&#xff08;&#xff09;、drawText&#xff08;&a…

从《100道光芒》到《可爱冠军的诞生》:湖南广电打响“参与式”电商突围战

每年的双11&#xff0c;都是各电商平台秀肌肉的比拼时刻。 在这场看不见硝烟的战场上&#xff0c;已经逐步分化成两大阵营&#xff1a;阿里、京东为首的货架电商&#xff0c;抖音为主的兴趣电商。在“人货场”偏向“人”的形势下&#xff0c;它们无一例外都在全力布局吸引“人…

Apache APISIX 玩转 Tongsuo 国密插件

文&#xff5c;罗泽轩Apache APISIX PMC本文通过解读国密的相关内容与标准&#xff0c;呈现了当下国内技术环境中对于国密功能支持的现状。并从 API 网关 Apache APISIX 的角度&#xff0c;带来有关国密的探索与功能呈现。本文 3446 字 阅读 11 分钟1. 什么是国密 顾名思义&…

元素的显示与隐藏

元素的显示与隐藏 本质&#xff1a;让一个元素在页面中隐藏或者显示出来 1、display属性 源代码 display属性用于设置一个元素应如何显示 display: none; 隐藏对象 display: block; block除了转换为块元素之外&#xff0c…

软件测试基础理论体系学习5-静态测试的理解

5-静态测试的理解1 介绍2 静态测试技术2.1 代码检查2.1.1 代码走查2.1.2 编码风格与规范2.1.3 审查2.1.3.1 代码审查和代码走查2.1.3.2 代码审查清单2.2 静态结构分析2.3 代码质量度量1 介绍 静态测试包括包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行&#…

友芝友生物冲刺港交所上市:极其依赖单一供应商,周鹏飞为董事长

12月9日&#xff0c;Wuhan YZY Biopharma Co.,LTD.&#xff08;武汉友芝友生物制药股份有限公司&#xff0c;下称“友芝友生物”&#xff09;向港交所提交上市申请材料&#xff0c;计划在港交所主板上市&#xff0c;中信建投国际为其独家保荐人。 此前&#xff0c;贝多财经曾在…

Spark零基础入门实战(六)使用IntelliJ IDEA创建Scala项目

IntelliJ IDEA(简称IDEA)是一款支持Java、Scala和Groovy等语言的开发工具,主要用于企业应用、移动应用和Web应用的开发。IDEA在业界被公认为是很好的Java开发工具,尤其是智能代码助手、代码自动提示、重构、J2EE支持等功能非常强大。 在IDEA中安装Scala插件 在IDEA中安装…

【Keras计算机视觉OCR】文字识别算法中DenseNet、LSTM、CTC、Attention的讲解(图文解释 超详细)

觉得有帮助麻烦点赞关注收藏~~~ 一、OCR文字识别的概念 利用计算机自动识别字符的技术&#xff0c;是模式识别应用的一个重要领域。人们在生产和生活中&#xff0c;要处理大量的文字、报表和文本。为了减轻人们的劳动&#xff0c;提高处理效率&#xff0c;从上世纪50年代起就开…