剑指刷题之复杂链表复制

别再瞎猜了!三角形接法PMSM的相电流到底怎么算?实测线电流转换公式与避坑指南 本文深入解析三角形接法永磁同步电机(PMSM)在FOC控制中的相电流计算误区,提供实测线电流转换公式与避坑指南。针对矢量控制系统中常见的√3换算错误,详细阐述正确的电流重构算法、硬件采样要点及软件优化技巧,帮助工程师实现精确控制并避免电机损坏。 阅读详情

- 题目要求

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

- 题目分析
采用分治法解决该问题。一共分三步
第一步,复制链表,插入的节点random指针均为空
第二步,根据各节点位置关系,更新random指针
第三步,将复制的链表split得到结果。
在这里插入图片描述

- 代码

//节点定义
struct RandomListNode {
    int label;
    struct RandomListNode *next, *random;
    RandomListNode(int x) :
            label(x), next(NULL), random(NULL) {
    }
};
class Solution {
public:
    RandomListNode* Clone(RandomListNode* pHead)
    {
        CopyList(pHead);
        LinkList(pHead);
        return SplitList(pHead);
    }
    
    RandomListNode* CopyList(RandomListNode* pHead)
    {
        RandomListNode* curNode = pHead;
        while(curNode != NULL)
        {
            RandomListNode* copyNode = new RandomListNode(curNode->label);//A'
            copyNode->next = curNode->next;//A'->B
            curNode->next = copyNode;//A->A'->B
            curNode = copyNode->next;//copy B to B'
            
        }
        return pHead;
    }
    
    RandomListNode* LinkList(RandomListNode* pHead)
    {
        RandomListNode* curNode = pHead;
        while (curNode != NULL)
        {
            RandomListNode* copyNode = curNode->next;
            if(curNode->random)
            {
                copyNode->random = curNode->random->next;//B->D->D',B->B'->D'
            }
            curNode = copyNode->next;
        }
        return pHead;
    }
    
    RandomListNode* SplitList(RandomListNode* pHead)
    {
        //A->A'->B->B'
        if(pHead == NULL)
        {
            return NULL;
        }
        RandomListNode* curNode = pHead;//A
        RandomListNode* pCopyHead = pHead->next;//A'
        RandomListNode* curCopyNode = pCopyHead;//A'
        while (curNode != NULL)
        {
            curNode->next = curCopyNode->next;//A->B
            if(curCopyNode->next != NULL)
            {
                curCopyNode->next = curCopyNode->next->next;//B->B'
            }
            curNode = curNode->next;
            curCopyNode = curCopyNode->next;
        }
        return pCopyHead;
    }
};

结构体指针初始化:

RandomListNode* copyNode = new RandomListNode(curNode->label);//A'
10xGenomics Loupe Browser实战指南:从数据导入到细胞注释全流程解析 本文提供了10xGenomics Loupe Browser的实战指南,详细解析了从数据导入到细胞注释的全流程。作为一款强大的可视化工具,Loupe Browser能帮助研究者直观探索单细胞测序数据,通过交互式操作进行细胞选择、差异基因分析和细胞类型注释,是单细胞数据分析入门和结果验证的高效平台。 阅读详情

相关推荐

6-3 根据派生类写出基类(Java解法)(PTA)

主要是看main函数里调用了什么方法和输出样例,一一对应一下有思路再写就很简单.建议使用IDEA自动生成,可以少写很多代码。

u012137663的博客 1142

【剑指】35,复杂链表的复制(注意)

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路:O(n), 1,根据普通节点指向先复制一遍,形成A>a>B>b>C>c…形状的链表; 2,遍历原来的ABC链表的随机指向节点(注意有哦共同...

AAAtang 150

【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第一节 lua框架的建立

魔兽世界插件实战笔记从入门到放弃的心理历程 第二节 lua框架的建立 找到魔兽世界的安装目录,找到插件的默认位置:\World of Warcraft\_retail_\Interface\AddOns,在这里建立一个文件夹,魔兽的插件都是用一个文件夹来区分的,第一课吗,就用Lesson_one吧。 下面建立的三个文件,第一个点toc文件是最重要的一个,它是魔兽客户端识别插件的一个标识符。 魔兽版本号有一个函数可以查询在WoWLua下面运行:print("当前游戏版本号:",(select(4,GetBui

qq_33075391的博客 6450

Go语言实现:【剑指offer】复杂链表的复制

该题目来源于牛客网《剑指offer》专题。 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) Go语言实现: type RandomListNode struct { Val int Next *Rand...

golang 相关内容分享 366

QGC二次开发实战指南(一):从零构建自定义地面站界面

本文详细介绍了QGC二次开发实战指南,从零开始构建自定义地面站界面。通过QT和QML技术结合MAVLINK协议,开发者可以打造适合特定业务场景的无人机监控系统,提升操作效率与用户体验。文章包含环境搭建、界面设计、数据绑定等完整开发流程,是QGC二次开发的实用教程。

weixin_28693683的博客 496

sentaurus学习笔记(VDMOS仿真)(三)

在Sentaurus中,这通常意味着在2D仿真中,x轴指向下,y轴指向右。定义了在2D模拟中,网格尺寸按照一定的增长率进行扩展,这里的增长率为2.0,意味着远离最小尺寸区域的网格单元大小将是最小尺寸的两倍。定义了2D模拟中网格单元的最小尺寸为0.001微米,这有助于控制网格的最小大小,从而影响仿真的精度和计算成本。表示启用中等级别的日志信息输出,这有助于用户了解仿真过程中发生的事件和可能的问题。表示启用保存调试文件,这可以帮助用户在仿真过程中检查和验证模型的状态。这行代码设置了仿真过程中使用的线程数。

qq_52640792的博客 1807

程序员面试题精选100题(49)-复杂链表的复制

略有所悟:不一定总是从头到尾一气呵成,像这样的一个节点一个节点的复制,先合成一个整体,之后在分开也是复制。关键是这样省去了寻找复制节点的时间(因为每当复制当前节点时一定要找到原来父节点所在的位置)。 思路如下: 在不用辅助空间的情况下实现O(n)的时间效率。第三种方法的第一步仍然是根据原始链表的每个结点N,创建对应的N’。这一次,我们把N’链接在N的后面。实例中的链表经过这一步之后变成了:

Creek Shi 493

网口通信实战(C#完整版):基于TCP协议的工业仪表数据采集系统开发

工业现场中80%的智能仪表(压力/温度/液位/流量/数显仪表)、采集模块、测控终端均支持TCP网口通信,这类设备的TCP通信有鲜明的工业特性:基于字节流的自定义二进制协议、一问一答的主从通信模式、对数据完整性/稳定性要求极高。本次实战是纯工业级落地项目,基于C# WinForm + .NET Framework 4.8(工业上位机标配)✅纯原生无依赖:零第三方类库/控件,仅用C#原生,源码可100%复用、无引用冲突、工控机完美兼容;✅双采集模式完美适配:同时实现「单次手动采集」+「连续自动采集」

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1802

牛客网 复杂链表的复制

题目: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解答: 思路参考:《苦练算法》-剑指Offer- 二十五、复杂链表的复制 -python编写 先复制原来链表 复制相互之间的random关系 将两个链表拆分...

Dan的专栏 372

WPS访问权限不足怎么解决??具体怎么操作?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 4171

SAP CPI 之使用国密算法实现SM系列算法加解密

System.out.println("SM2-私钥:" + privateKey);System.out.println("SM2-公钥:" + publicKey);System.out.println("SM2-密文:" + encrypts);System.out.println("SM2-明文:" + data2);新建groovy,通过import之后,调用jar包中的方法。在CP中导入jar包,选择Upload,选中导入的jar包。的密钥和向量值,不安全!的公钥和私钥,不安全!

u012830826的博客 1335

【剑指Offer刷题系列】复制一个复杂链表

实现一个函数,用来复制一个复杂链表。复杂链表中的每个节点不仅有一个next指针指向下一个节点,还有一个random指针,指向链表中的任意节点或null。目标是生成一个与输入链表功能和结构完全相同的新链表。输入7null13071141**输入:**head = [][]**解释:**给定的链表为空(空指针),因此返回 null。10000

weixin_44329069的博客 1107

11、ThingsBoard集群部署k8s

今天终于有时间去搞这个啦,拖了很久了,一直没时间,因为我本地没有那么多机器资源,开虚拟机不够,如果租用阿里云服务器,需要有充值的时间,因为这个费用是按小时付费,需要有连贯的时间来搞才行,今天恰好有时间,就开始搞了,弄成功搞出来了,特地写博客记录下来。

AldrichEugene 991

《剑指Offer》Java刷题 NO.25 复杂链表的复制

《剑指Offer》Java刷题 NO.25 复杂链表的复制(链表、哈希表、加长链表拆分) 传送门:《剑指Offer刷题总目录》 时间:2020-03-05 题目: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路: 这道题由...

qq_39618369的博客 181

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

剑指offer刷题————复杂链表的复制

目录 问题重述: 思路解析: 代码实现: 问题重述: 题目:请实现一个函数来复制一个复杂链表。在复杂链表中,每个节点除了有一个next指针指向下一个节点外,还有一个random指针,指向链表中的任意节点或者NULL。 思路解析: 假设有一个链表如下: 其中虚线表示random指针,我们可以在每个节点后面添加一个复制品。如下: 接下来来看random指针,如图所示,由于A的random指针指向了C,因此C`的random指针应该指向C`。 连接好random指针后,我们可.

李志杰的博客 213

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

剑指Offer 刷题 复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 来源:https://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba?tpId=13...

Cherish@WVv 157

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

剑指刷题 复制一个复杂链表

复杂链表的数据元素 包括 数据域 next域 一个随机域,随机也是指向这个链表中的任一个结点。 解题思路是:从头到尾 遍历的同时 复制链表结点,在复制链表结点的时候 只能 暂时根据原链表复制出 数据域 和next指针域,随机指向的结点,不一定已经复制出新结点。 所以在这个同时 将 原链表每个结点的地址(使用数组arr1),以及新链表每个结点的地址(使用数组arr2) 保存下来,等到 全...

m0_37896011的博客 166

剑指Offer刷题总结-复杂链表的复制

复杂链表的复制 今天重刷剑指offer,又遇到这道题了,今天绝对的要把它搞的明明白白。 奋战一天,完成任务。 不太写博客,都在有道上面,以后坚持下,多多输出,文中有写的不好的地方希望大佬们轻喷。 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。 思路分析 这道题可能刚开始做会懵逼,但是没关系从暴力开始,然后逐步优化 1.暴力-------时间复杂度O(n²),空间复杂度O(1)

Leran_daydayup的博客 142

剑指Offer刷题(复杂链表的复制)

剑指Offer刷题(复杂链表的复制)一.题目描述二.代码(C++)三.提交记录四.备注 一.题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 二.代码(C++) /* struct RandomListNode { int label; struct RandomListNode *next, *r

Umbraner的博客 171

剑指Offer刷题笔记——复杂链表的复制

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序判断直接返回空) # -*- coding:utf-8 -*- # class RandomListNode: # def __init__(self, x): # self...

七月听雪的博客 161

剑指offer刷题14 复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路 之所以叫复杂链表是因为,和普通的链表相比,他除去一个next指针,还有一个随机指针,指向一个随机的结点。 可以先按照next指针把这些链表中的元素串起来,然后开始遍历链表,为每一个元素的random指针赋值,对于这个指针,因为是随机的,不太好找,所以我另设

tiny_Firefly的博客 178

《剑指Offer》刷题之复杂链表的复制

《剑指Offer》刷题之复杂链表的复制 我不知道将去向何方,但我已在路上! 时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! 题目: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 代码1: # -*- coding:utf-8 -*- class RandomLi

胡萝卜 151

【剑指 Offer】复杂链表的复制————刷题日记

复杂链表的复制

weixin_45956631的博客 144

【剑指offer刷题】--链表--复杂链表的复制

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)  这道题最简单的递归法,但貌似A不了 // solution1:递归法 struct RandomListNode{ int label' struct RandomLi...

wxq_1993的博客 196

JavaScript版《剑指offer》刷题(24)复杂链表的复制

1.题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 2.题目分析 这道题有三种解法。 解法一 就是普通的解法,先复制节点,用p.next连接起来。然后再去设置p.random指针指向,不过这个设置又需要从头节点开始查。 所...

yangyang的专栏 214

【剑指 Offer 35. 复杂链表的复制】刷题笔记

力扣-剑指 Offer 35. 复杂链表的复制。

Shelly_Cao的博客 127
上一篇: shell学习
下一篇: 《Effective C++学习》学习笔记01-03
miss_future
博客等级 码龄9年 6粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值