剑指offer 面试题35 复杂链表的复制

Coze智能体开发:扣子空间制作PPT功能 扣子空间内置了丰富的场景模板,涵盖人文历史、学术分享、研究报告、数据分析等场景,可以满足不同用户的需求。 你只需输入与制作 PPT 相关的提示词,Agent 就能基于这些提示词展示思考的过程,并自动生成完整的 PPT。 阅读详情

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

tips: 分为三步
1.把list扩充为两倍(每个元素后面产生一个复制的元素)
2.对复制出来的元素构建random指针
3.拆分为两个相同的链表

时间复杂度O(n), 且不需要额外的辅助空间

class Solution {
public:
    RandomListNode* Clone(RandomListNode* pHead)
    {
        RandomListNode* pNode=pHead;
        // 把list扩充为两倍(每个元素后面产生一个复制的元素)
        while (pNode!=NULL)
        {
            RandomListNode* pNext=pNode->next;
            pNode->next=new RandomListNode(pNode->label);
            pNode->next->next=pNext;
            pNode=pNext;
        }
        //对复制出来的元素构建random指针
        pNode=pHead;
        while (pNode!=NULL)
        {
            if(pNode->random!=NULL) {
                pNode->next->random=pNode->random->next;
            } else {
                pNode->next->random=NULL;
            }
            pNode=pNode->next->next;
        }
        //拆分为两个链表
        pNode=pHead;
        RandomListNode* clone=new RandomListNode(-1);
        RandomListNode* pCloneNode=clone;
        while (pNode!=NULL)
        {
            pCloneNode->next=pNode->next;
            pCloneNode=pCloneNode->next;
            pNode->next=pNode->next->next;
            pNode=pNode->next;
        }
        return clone->next;
    }
};

论文阅读:ICLR 2026 Breaking and Fixing Defenses Against Control-Flow Hijacking in Multi-Agent Systems 该论文首先系统阐述了控制流劫持攻击的核心机理。此类攻击通过操纵多智能体系统的编排机制,诱导系统执行非安全操作,进而实现敏感信息窃取。攻击者将恶意指令伪装成环境错误信息,借助可信代理传递至系统编排器,利用"困惑副手"漏洞绕过传统安全防线。该论文指出,现有防御方案如LlamaFirewall所依赖的对齐检查机制存在根本性局限——安全目标与功能需求之间存在不可调和的内在冲突。该论文的核心贡献体现在攻防两个维度。 阅读详情

相关推荐

Flutter模块打包AAR集成Android原生项目实践

跨平台开发框架Flutter通过将UI组件渲染为原生代码实现高性能表现,其核心优势在于一套代码可同时运行在iOS和Android平台。在工程实践中,将Flutter模块打包为AAR(Android Archive)进行集成,成为混合开发的主流方案。这种方案既保留了原生项目的稳定性,又能渐进式引入Flutter的高效开发特性。通过配置MethodChannel实现原生与Dart代码通信,开发者可以灵活控制Flutter引擎生命周期,优化内存占用和渲染性能。对于电商、社交等需要快速迭代的业务场景,该方案能显著提

weixin_34025051的博客 398

剑指offer 面试题35:复杂链表的复制 三种解法 c++

题目:请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。在复杂链表中,每个结点除了有一个pNext指针指向下一个结点之外,还有一个pSibling指向链表中的任意结点或者NULL。结点的定义如下: struct ComplexListNode{ int label; ComplexListNode* pNe...

别说话写代码的博客 2045

hive sql每个用户的累积访问次数

我们有如下的用户访问数据 userId visitDate visitCount u01 2017/1/21 5 u02 2017/1/23 6 u03 2017/1/22 8 u04 2017/1/20 3 u01 2017/1/23 6 u01 2017/2/21 8 U02 2017/1/23 6 U01 2017/2/22 4 要求使用SQL...

weixin_39150719的博客 3480

【剑指offer】面试题35:复杂链表的复制

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

Java学习 392

小样本学习概述

目录 前言 小样本学习存在的意义? 什么是小样本学习? 小样本学习的方法有哪些? 结语 前言 小样本学习(Few-Shot Learning)是近几年兴起的一个研究领域,小样本学习旨在解决在数据有限的机器学习任务。 小样本学习存在的意义? 近些年,以深度卷积神经网络为代表的深度学习方法在各类机器学习任务上取得了优异的成绩——很多任务上已经超越了人类表现。狂欢背后,危机四伏。因为这些深度学习方法work的关键之一是海量标注数据的支持。 但是在工业界,很多时候难以获得海量的训练数据,更.

DwD-的博客 3万+

kubedns-coredns部署pod出现not ready问题

文章目录遇到的问题1、发现问题2、排查问题3、解决方法 coredns的实例health_check不通过的问题,排查和解决方法 遇到的问题 1、发现问题 pod启动但是未ready 查看是readiness失败 使用对应的URL进行curl,发现真的返回503 2、排查问题 查看错误日志,发现一堆这个错误"waiting on : kubernetes" 网上相关的问题解答 这个跟测试场景不一样,这个案例是开了防火墙,可以确认我这个案例的机器没有开防火墙,但它提醒了一点,coredns是需要访问ap

u012533481的博客 2844

【剑指offer】面试题35 复杂链表的复制

题目要求 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题分析 本题是一个十分复杂的过程,意在考察我们将大问题划分成那个若干个小问题的能力。最容易想到的方法是,先复制一遍链表,然后根据原链表中的节点random指针,再去对复制好...

爱喝舒化奶的博客 340

模拟IC实战—30天精通Sigma-delta(Σ-Δ) ADC 行为级建模与仿真

本文为模拟IC工程师提供了一套为期30天的Sigma-delta ADC行为级建模与仿真实战指南。文章深入浅出地阐释了Sigma-delta ADC如何通过过采样和噪声整形两大核心技术实现高精度转换,并重点演示了如何使用Python从零搭建一阶和二阶调制器模型,进行性能仿真与关键指标分析,为后续电路级设计提供清晰的性能预算和架构指导。

weixin_29237635的博客 398

剑指offer面试题35(java版):复杂链表的复制

welcome to my blog 剑指offer面试题35(java版):复杂链表的复制 笔记 这道题卡了很久, 因为最后拆分链表的时候, 我只提取了复制后的链表, 没有管原先的链表, 结果就判错了 是不是判题的机制有问题? 注意random为null的情况, 此时random没有next. even.random = odd.random == null? null: odd.random...

littlehaes的博客 278

【短距离通信】【WiFi】精讲WiFi 6E协议!图解超赞超详细!!!

802.11ax(HE,HighEfficiency) (Wi-Fi 6E):6G频段共有1200MHz的频谱给到WiFi 6E使用,可用于从5.925GHz到7.125GHz。WiFi将可以访问59个20MHz信道,29个40MHz信道14个80MHz信道和7个160MHz信道。这不仅代表可以有很多频道,还可以代表可以解锁更高的数据速率。因为 802.11ax 标准(Wi-Fi 6)也在 2.4GHz 和 5GHz 频段运行,所以 6GHz 频段的 Wi-Fi 将被命名为 Wi-Fi 6E。

风云说通信 2340

【YOLOv8全方位学习手册】第四章 数据增强:从扩充数据到塑造模型的认知边界

"""使用 Albumentations 做自定义增强,兼容 YOLO 格式"""])# 转成 numpy# boxes 必须是 [[x_min,y_min,x_max,y_max], ...]# 在数据加载时调用你可以把集成到 PyTorch 的 Dataset 类里,或使用 Ultralytics 自带的DataLoader。

VectorShift的博客 211

剑指offer 面试题35:复杂链表的复制

此题中链表共有next和任意指向的next两种指针,重点在如何设置random指针 思路一:采用map,存储原链表和新复制链表之间的对应关系,然后设置random指针 /* struct RandomListNode { int label; struct RandomListNode *next, *random; RandomListNode(int x) : ...

Ben 245

【YOLO11改进 - C3k2融合】C3k2融合DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测

【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1054

剑指offer:面试题35 复杂链表的复制

面试题35 复杂链表的复制 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例 1: 输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出:[[7,null],[13,0],[11,4],[10,2],[1...

黄義泰的博客 386

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

剑指offer:面试题35—复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解决: 做不明白链表题啊!! 复制链表的每个结点,到该结点的后面 重新遍历链表,复制原结点的随机指针给新结点; 拆分链表,分为原链表和新链表 /* public...

123木头人! 255

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

剑指offer面试题35:复杂链表的复制

题目:请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。在复杂链表中,每个节点除了有一个m_pNext指针指向下一个节点,还有一个m_pSlbling指针指向链表的任意节点或者nullptr。 思路: 方案一:哈希表(需要O(N)的辅助空间) 方案二:第一步,复制链表节点连接在被复制节点后;第二步,复制m_pSibling指针...

ym & blog 206

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

剑指Offer——面试题35:复杂链表的复制

面试题35:复杂链表的复制 题目:请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。在复杂链表中,每个结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling 指向链表中的任意结点或者nullptr。 解决方案: 第一步:复制原始链表的任意节点N并创建新节点N’,再把N’链接到N的后面。 第二步:如果...

愿你慢慢变强的博客 200

剑指offer之面试题35:复杂链表的复制

复杂链表的复制 1、题目 请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。在复杂链表中,每个节点除了有一个m_pNext指针指向下一个节点,还有一个m_pSibling指针指向链表中的任意节点或者nullptr。节点的C++定义如下: struct ComplexListNode { int ...

乘启飞翔 177

剑指Offer(第2版)——面试题35:复杂链表的复制

题目: 请实现函数 ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。在复杂链表中,每个节点除了有一个m_pNext 指针指向下一个节点,还有一个m_pSibling 指针指向链表中的任意节点或者nullptr。 ...

qq_32486393的博客 239

剑指offer面试题35 复杂链表的复制

题目描述: 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 解题思路: 1 哈希表 第一步复制原始链表上的每个节点N,由此创建复制节点N‘,同时将<N,N’>对放到一个哈希表中。第二步利用已生成的哈希表对复制节点N‘进行连接。利用空间换取时间,...

weixin_43112462的博客 210

复杂链表的复制(剑指offer 面试题35)

题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路: 本题是对复杂链表的复制,这里实现的方法时间复杂度是O(n),并且没有开辟额外的空间; 1)首先复制原来的复杂(随机)链表,形成A-&gt;A`-&gt;...

Victory_tc的博客 255

20200327——剑指offer 面试题35:复杂链表的复制

听到这个问题之后,很多应聘者的第一反应就是把复制过程分成两步,第一步是复制原始链表的每一节点,并用next指针链接起来;第二部是设置每个节点的随机指针,假设原始链表中的某个节点N的随机指向S,由于S在链表中可能在N的前面也可能在N的后面,所以要定位S的位置,需要从原始链表的头结点开始找,如果原始链表的头结点沿着next指针经过s步找到节点S,那么再复制链表上。 对于一个含有n个节点的链表,由于定位...

寄蜉蝣于天地,渺沧海之一粟。 193

剑指Offer面试题35:复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路: 解题代码: 三部法: /* struct RandomListNode { int label; struct RandomLis...

freeygh的博客 164
上一篇: Leetcode95. 不同的二叉搜索树 II
下一篇: 剑指offer 面试题36 二叉搜索树与双向链表
wenkun97
博客等级 码龄10年 15粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值