复杂链表的复制(Java实现)

COMSOL仿真分析高压直流GIS/GIL绝缘性能优化 高压直流气体绝缘设备(GIS/GIL)的绝缘性能是保障电网可靠运行的关键。通过COMSOL Multiphysics多物理场仿真,可以深入分析气固界面电场分布与电荷积聚机理。该技术结合静电场、热场和电荷传输耦合计算,能准确模拟温度梯度对SF6气体与环氧树脂界面特性的影响。工程实践中,这类仿真可优化导体结构设计、改进绝缘材料配方,并建立电场-温度关联预警模型。特别是在80℃高温工况下,仿真显示界面电荷密度会显著增加23%,这对设备安全运行具有重要指导价值。 阅读详情

1.题目

在这里插入图片描述

2.解法

/*
public class RandomListNode {
    int label;
    RandomListNode next = null;
    RandomListNode random = null;

    RandomListNode(int label) {
        this.label = label;
    }
}
*/

public class Solution {
    public RandomListNode Clone(RandomListNode pHead) {
        if(pHead == null) {
            return null;
        }
        RandomListNode curNode = pHead;
        RandomListNode nextNode = null;
        //1、复制每个结点,如复制结点A得到A1,将结点A1插到结点A后面;
        while (curNode != null) {
            RandomListNode cloneNode = new RandomListNode(curNode.label);
            nextNode = curNode.next;
            cloneNode.next = nextNode;
            curNode.next = cloneNode;
            curNode = nextNode;
        }
       
        
        curNode = pHead;
        //2、重新遍历链表,复制老结点的随机指针给新结点,如A1.random = A.random.next;
        while(curNode != null) {
            // 为什么是random.next,因为原结点后面紧跟复制的结点
            curNode.next.random = (curNode.random == null ? null : curNode.random.next);
            curNode = curNode.next.next;
        }

        //3、拆分链表,将链表拆分为原链表和复制后的链表
        curNode = pHead;
        RandomListNode cloneHead = pHead.next;
        RandomListNode cloneNode = null;
        while (curNode != null) {
            cloneNode = curNode.next;
            curNode.next = cloneNode.next;
            // 如果cloneNode.next为空的话
            cloneNode.next =  (cloneNode.next == null ? null : cloneNode.next.next);
            curNode = curNode.next;
        }
        return cloneHead;
    }
}

时间复杂度为O(3n),空间复杂度为O(n)

史上最全!研究生科研必备科研工具(含AI科研工具),附使用说明和示例 这些工具在科研中的应用非常广泛,可以帮助研究生更高效地完成研究任务。为了更好地利用这些工具,建议深入学习它们的官方文档和教程,或者参加相关的工作坊和培训。 阅读详情

相关推荐

Vivado新手避坑指南:搞懂Generate Output Products和Create HDL Wrapper到底在干啥

本文深入解析Vivado设计流程中的Generate Output Products和Create HDL Wrapper两大关键步骤,帮助新手理解其核心功能与操作要点。通过详细讲解文件生成类型、关键选项设置及常见问题解决方案,指导开发者正确使用这两个功能,避免设计流程中的常见错误,提高FPGA开发效率。

weixin_29207149的博客 313

牛客JZ35——复杂链表的复制(JAVA)

方法一:使用hash表,首先遍历链表,把节点本身和新建的对应节点都放入map中,然后再一次遍历链表,并从hash表中取出对应的值。把每一个节点复制并且插入原来的链表中,即原来1-2-3变成1-1(拷贝)-2-2(拷贝)-3-3(拷贝)思路:因为不可以用原来链表中的结点,所以链表里面的每一个节点我们都要重新新建一遍。然后再次遍历链表把对应的random指针也进行拷贝。最后再次遍历链表将链表拆成两个链表即可。head作为第二次遍历链表的头结点。pHead作为放入map的数据。res链表为返回的结果。

weixin_51350949的博客 383

Tomcat漏洞——弱口令爆破

靶机:CentOS7 IP:192.168.100.40。攻击机:kali IP:192.168.100.60。版 权 声 明:本博客所有文章除特别声明外,均采用。文章版权归作者所有,未经允许请勿转载!作 者:PeiyuJue。

weixin_57379923的博客 911

【Java】每日一题,复杂链表的复制

请实现函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个next指针指向下一个节点,还有一个random指针指向链表中的任意节点或者null。这个复杂链表相较于普通链表而言就是多了一个随机指针指向链表中的任意节点或null,那么我们应该向清楚怎么复制一个普通链表,其次在考虑怎么复制一个复杂链表。

weixin_53662229的博客 301

自学PCB思路 | PCB设计零基础入门-小白适用(附详细入门经验分享)

本人大一在实践课上就听说PCB,被虎的一楞一楞的,不过现在回看,发现其实并没有相信的那么难!想着把自己这一路摸索的学习路线分享一下,当时我是一边摸索一边上手,一把鼻涕一把泪的过来的。如果你想搞硬件或者需要搞硬件,下面是我的入门学习过程,希望可以帮到你。目录前言选择一款设计软件好的入门课程掌握抄板元件采购焊板子烙铁头热风枪自己半设计明确设计需求全设计最后我并非什么大佬,也没法自己去教大家如何画板。

自动化小秋葵的博客 1万+

PCB激光直接成像(LDI)设备技术解析与优化方案

激光直接成像(LDI)是PCB制造中的关键数字化工艺,通过激光束直接在基板上形成电路图案。其核心技术在于高精度光学系统与智能控制算法的结合,工作精度可达微米级。在HDI板、柔性电路等高端PCB制造中,LDI技术能显著提升线宽精度和层间对位准确性。当前行业面临材料适配性、热变形控制等挑战,动态能量补偿、多波长曝光等创新方案正在突破这些瓶颈。随着模块化设计、预测性维护等工程实践的普及,LDI设备综合效率持续提升,为5G、汽车电子等领域的精密电路生产提供关键技术支撑。

weixin_29168393的博客 394

复杂链表的复制(Java)

原题链接 1新建链表(时间O(N^2) 空间O(1)) 思路来源:只有构建了完整的新链表后,才能确定每个结点的地址,才能确定next域。 源码: class Solution { public Node copyRandomList(Node head) { //1计算链表的长度 //2先建立一个与其长度相同的ramdom域的链表 //3建立两个指针确认每个结点的random域指向的结点 并把相应的信息同步到新链表中 Node cur = head;//遍历原链表的指针

weixin_57613499的博客 264

nvprof:CUDA编程性能分析工具

NVIDIA提供了具有高性能计算的GPU产品,如何检验硬件的实际性能,写出高效的CUDA代码让算力加速卡物尽其用,那可以通过其配套提供的“护城河”软件工具链来检验和帮助发挥GPU的性能:nvprof。如下,对于将8192个A,B向量进行向量加法运算,即C[i] = A[i] + B[i],当软件设置不同的blocknum, threadnum时候,CUDA执行kernel的时间是不同的。比如如下命令,可以看到程序tmp1的总体性能,下面一行是打印gpu的执行时间情况。

Briwisdom的博客 3385

单链表(Java)

java单链表的固定套路

m0_55875421的博客 853

喷涂机器人系列编程:ABB IRB 5500_(2).ABB IRB 5500喷涂机器人系统架构与组件

ABB IRB 5500喷涂机器人系统不仅在性能上表现出色,而且在安全和维护方面也提供了全面的解决方案。通过本文的详细介绍,希望读者能够更好地理解和掌握这一系统的架构和功能,为实际应用提供有力支持。

zhubeibei168的博客 779

嵌入式编程模型 | 原型模式

本文介绍了原型模式在嵌入式传感器网络中的应用。原型模式通过复制现有对象创建新实例,避免了重复初始化开销,适用于设备配置克隆、状态复制等场景。文章以传感器网络为例,展示了原型模式的结构(抽象原型类、具体原型类、客户端)和实现方式,通过C语言代码演示了温度/湿度传感器的克隆过程。该模式能有效提升嵌入式系统资源复用效率,实现快速部署相似配置的传感器节点,同时保持内存优化和配置灵活性。

嵌入式大杂烩 148

力扣138. 复制带随机指针的链表

题目链接 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。 例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。

weixin_43795939的博客 991

安卓手机老版本微信无法登录?无需root 一招教你如何搞定!旧版本照样登录,微信7.0亲测有效

微信我试了清缓存、用不同的版本、甚至关网登录都不行。于是我研究了一下背后的原理,发现这不仅是个技巧,还是微信设计的一点“疏忽”——**只要有方法,旧版本照样能用**。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1万+

【编程题】复杂链表的复制(Java实现)

【编程题】复杂链表的复制(Java实现) 题目来源 剑指offer第25题 https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不...

qq_40432108的博客 307

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

剑指Offer25 复杂链表的复制 JAVA实现

剑指Offer25 复杂链表的复制 刚开始是真的不知道什么是复杂链表,之后上网搜了一下这个题要怎么解,后面参考了 浅谈复杂链表的复制 才知道是什么,有兴趣的可以去看一下,然后他那边是采用C++写的,而我把它转为JAVA,因为怕自己忘记了,所以记录下来。 可以先去看那篇博客 写的很清晰,只有最后一段的程序,没有写怎么分离的。 最后一定要注意! while(s1.next!=null)...

Wangfulin07的博客 516

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

剑指offer:025 复杂链表的复制 附:java实现

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

陌心的博客 125

假人有限元模型

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

【Java实现】复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行复制,并返回复制后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路 用一个 hashmap保存新旧链表节点的对应的结点关系 代码 import java.util.HashMap; /* public class RandomListNode { int label; RandomListNode nex

Gebo的博客 253

剑指offer编程题(JAVA实现)——第25题:复杂链表的复制

github https://github.com/JasonZhangCauc/JZOffer import java.util.HashMap; /** * * 剑指offer编程题(JAVA实现)——第25题:复杂链表的复制 * * 题目描述 * 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点, * 另一个特殊指针指向任意一个节点)...

JZ 6535

剑指Offer(Java实现):复杂链表的复制、二叉搜索树与双向链表、字符串的排列

package com.dengzm.jianzhioffer; /** * @Description 035 复杂链表的复制 * 在复杂链表中,每个节点除了指向下一个节点,还有一个变量指向链表中的任意节点或为null * * Created by deng on 2019/5/25. */ public class Jianzhi035 { public static vo...

Dengzm94 250

【Java】实现复杂链表的复制

##Main.java public class Main { public static void main(String[] args) { Node n1 = new Node(1); Node n2 = new Node(2); Node n3 = new Node(3); Node n4 = new Node(3);...

falime的博客 183

Java 实现复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 这道题有三种解法,我在这里只是使用了时间复杂度和空间复杂度最低的方法: 主要分为三步: 复制出来的新节点紧接着插入对应的旧节点后面 第二步再复制random指针 最后一步就...

MJ_911的博客 169

剑指Offer编程题(Java实现)——复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路 第一步,在每个节点的后面插入复制的节点。 第二步,对复制节点的 random 链接进行赋值。 第三步,拆分。 实现 /* publi...

猫不夜行的博客 149

Java实现复杂链表的复制

复杂链表的定义:复杂链表的每个节点包括数据,指向下一个节点的指针和一个随机指针(既可指向自己,也可指向NULL,还可指向其它任意节点)。 //复杂链表的节点定义 class RandomListNode { int label;//节点对应的值 RandomListNode next = null;//指向下一个节点的指针 RandomListNode random =...

ty6693的博客 380

复杂链表的复制(java实现)

题目描述: 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的深拷贝。 思路一: 使用hash存储原结点和复制结点的映射关系,通过映射关系处理复制结点的random。 (时间复杂度O(n),空间复杂度O(n)) 代码实现: class Solution { public Node copyRandomList...

雨纷飞_263 337

剑指Offer:复杂链表的复制 (java代码实现)

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路一 1.创建一个map 遍历链表将每个结点 和复制当前结点的结点 构成一个key 和value放进map中 2.再次遍历链表 将每个结点作为key去查找map中的val ...

wmh1152151276的博客 1033
上一篇: 字符串的排列
下一篇: 矩形覆盖(Java实现)
念殊15
博客等级 码龄8年 17粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值