剑指刷题之复杂链表复制

oVirt 4.4.10超详细安装指南:从零搭建企业级虚拟化环境(附常见错误排查) 本文提供了oVirt 4.4.10企业级虚拟化平台的超详细安装指南,涵盖环境规划、系统准备、Engine安装配置、计算节点部署、存储系统集成及高级运维技巧。通过实战操作手册和常见错误排查方法,帮助用户从零搭建稳定高效的虚拟化环境,特别适合企业IT管理员参考实施。 阅读详情

- 题目要求

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的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'
AIGC实战——变分自编码器(Variational Autoencoder, VAE) 变分自编码器通过在模型中引入随机性,并限制潜空间中的点的分布来解决自编码器存在的问题。只需进行一些微小的调整,就可以将自编码器转换为变分自编码器,从而使其成为真正的生成模型。在本节中,我们介绍了变分自编码器的基本原理,并使用 `Keras` 实现了一个变分自编码器用于生成 Fashion-MNIST 图像。 阅读详情

相关推荐

VS code平台调试AutoLISP程序教程

VS code平台调试AutoLISP程序教程

BearElder的博客 3184

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

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

AAAtang 150

从AI画稿到3D虚拟时装:Illustrator与Substance 3D的服装设计工作流

本文旨在解决传统服装与纺织品设计师在产品开发流程中,面临的“2D印花图案无法直观预见3D上身效果”、“物理打样成本高昂且周期漫长”的核心痛点。我们将介绍一套纯数字化的3D可视化工作流,核心是利用 Adobe Illustrator 进行矢量印花图案创作,通过 Adobe Substance 3D Sampler 将其转化为逼真的PBR(基于物理渲染)布料材质,并最终在 Adobe Substance 3D Stager 中,将该材质应用于3D服装模型,渲染出照片级的虚拟样衣。本指南将帮助设计师以极低的成本和

Kingsdesigner的博客 1398

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

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

golang 相关内容分享 366

PCIe设备内存访问实战:从ioremap到DMA映射的完整流程解析

本文深入解析了PCIe设备内存访问的完整流程,涵盖从CPU通过ioremap访问设备寄存器,到设备通过DMA映射高效读写主机内存的核心机制。详细探讨了虚拟地址、物理地址与总线地址的转换关系,对比了一致性与流式DMA映射的适用场景及同步要点,并阐述了IOMMU在安全与效率中的作用,为驱动开发者提供了实战代码与关键陷阱分析。

weixin_29201933的博客 506

PaddleOCR GPU部署:从环境配置到避坑实战指南

本文详细介绍了PaddleOCR GPU部署的全过程,从环境配置到避坑实战指南。通过分析常见的部署失败原因,提供硬件兼容性自查、软件环境精配方案以及路径配置的解决方案,帮助用户高效完成GPU加速的OCR任务部署,避免90%的常见错误。

weixin_30839881的博客 418

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

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

Creek Shi 493

比较几款国际主流的电子元器件及物料清单管理软件 – 工具汇总

Arenasolution 老牌的基于云计算物料清单管理软件,bom.com就是他们家的,10天免费试用,功能被分成4个不同的产品, 和传统ERP功能上有重叠,偏向于物流生产规划,一定程度可以取代ERP的生产规划模块,平均价格70美元/月/席位。网页客户端,不支持离线   SiliconExpert 曾经的老牌物料清单管理软件,后被Arrow 收购,14天免费试用,功能被分成4个不同的产品

u012062784的专栏 7236

牛客网 复杂链表的复制

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

Dan的专栏 372

2022年灌溉试验设计与数据分析考试试题

2.表2数据为表层0~10cm的原状土离心机土壤水分特征曲线试验数据,(1)请利用R语言nls函数通过Van Genuchten方程对土壤体积含水率和土壤基质势进行拟合;(3)指明土壤基值势为-33 kPa和-1500kPa时的体积含水率。1.请根据表1数据,以灌溉模式为主区,生物炭用量为子区,利用R语言agricolae包生成裂区试验设计试验处理布置图;3.以R工具包factoextra中decathlon2数据集前10列为数据进行PCA分析,要求计算出(1)前5个主成分的特征值、特征向量;

Mrrunsen的博客 266

【NLP】第十章:位置编码Positional Encoding

前面讲RNN时一般都会有一个ht的输出,这个输出就是样本与样本之间的信息,而且RNN是时序循环的,所以RNN本身的结构,在物理上,就自带词的前后顺序信息的。比如词never,不管never本身的词向量是什么,只要你在序列中排第一个位置,你的位置向量就是[0,1,01],你排第三个位置,你的位置向量就是[0.9,-0,4,0.2,1.0]。也所以,你可以理解为:embedding后的词嵌入,PE按照每个样本在sequence中的位置,把embedding后的词嵌入给扭转后,才送入attention的。

因为热爱所以坚持 1918

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

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

weixin_44329069的博客 1107

【深度学习】脸部修复,CodeFormer,论文,实战

Blind face restoration是一个高度 ill-posed 的问题,通常需要辅助引导来 1) 改善从降级输入到期望输出的映射,或者 2) 补充在输入中丢失的高质量细节。在本文中,我们展示了在一个小的代理空间中学到的离散码本先验可以通过将盲目的面部恢复建模为 a code prediction task来大大减少恢复映射的不确定性和模糊性,同时为生成高质量面部提供丰富的视觉元素。

q742971636的博客 2994

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

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

qq_39618369的博客 181

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

李志杰的博客 213

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

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

Cherish@WVv 157

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

复杂链表的数据元素 包括 数据域 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、付费专栏及课程。

余额充值