剑指 Offer 35. 复杂链表的复制(golang版)

剑指offer所有编程练习总结分析 给出剑指offer所有题目描述和对应的解题思路,并且在最有给出对应的代码展示和测试内容 由于牛客剑指Offer题目经过整理和筛选,是面试备考的经典资源之一,因此它的重要性在面试准备过程中是很高的。做这些题目可以帮助面试者熟悉常见的面试题型、巩固基础知识、提升编程能力,为应对面试提供了很好的准备。然而,还需注意不仅仅局限于做题,理解背后的原理和思想同样重要,以便能够在面试时灵活运用和展示自己的能力。 阅读详情
  • 题目描述
请实现 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,0]]

示例 2:
在这里插入图片描述

输入:head = [[1,1],[2,1]]
输出:[[1,1],[2,1]]

示例 3:
在这里插入图片描述

输入:head = [[3,null],[3,0],[3,null]]
输出:[[3,null],[3,0],[3,null]]

示例 4:
输入:head = []
输出:[]
解释:给定的链表为空(空指针),因此返回 null。
 
提示:
-10000 <= Node.val <= 10000
Node.random 为空(null)或指向链表中的节点。
节点数目不超过 1000 。
 
注意:本题与主站 138 题相同:https://leetcode-cn.com/problems/copy-list-with-random-pointer/

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
  • 思路
    1、先用尾插法生成新的链表,在这个过程中保存新旧链表各个节点的位置信息,tmp1[*Node]int 保存旧链表节点信息,key值为节点的指针地址,value为顺序信息,tmp2[int]*Node 保存新链表的节点信息
    2、遍历链表,在tmp1中找到random所指向的节点,取出value,然后在tmp2中找到该value对应的节点地址,赋值过去即可。
  • 代码
func copyRandomList(head *Node) *Node {
	//如果为空直接返回
	if head == nil {
		return nil
	}

	root := head
	//tmp1保存head链表各个节点的顺序,键值为节点的指针地址,值为第几个节点
	tmp1 := make(map[*Node]int)
	//tmp2保存新链表各个节点的顺序,键值为节点的顺序值,值为节点的指针地址
	tmp2 := make(map[int]*Node)
	resHead := new(Node)
	resRoot := resHead
	i := 0
	for root != nil {
		//将老链表的顺序信息保存到tmp1中
		tmp1[root] = i
		//新建节点,并将节点挂到resRoot后(尾插法)
		tmpNode := &Node{root.Val,nil,nil}
		resRoot.Next = tmpNode
		resRoot = resRoot.Next
		//将新节点的顺序信息保存到tmp2中
		tmp2[i] = tmpNode
		root = root.Next
		i++
	}

	root = head
	resRoot = resHead.Next
	for root != nil {
		//如果节点的random不为空,从tmp1中取出节点的random在老链表中指向的节点的位置,即tmp1[node]的值k,然后取出tmp2[k]的值,赋值即可
		if root.Random != nil {
			d := tmp1[root.Random]
			resRoot.Random = tmp2[d]
		}
		root = root.Next
		resRoot = resRoot.Next
	}
	return resHead.Next
}

探测器反向偏压_光探测器PN结原理 1 光探测原理在光的作用下,当光敏物质中的电子直接吸收光子的能量足以客服原子核的束缚时,电子就会从基态被激发到高能态,脱离原子核的束缚,在外电场作用下参与导电,因而产生了光电效应。(这里需要说明的是,如果光子不是直接与电子起作用而是能量被固体晶格振动吸收,引起固体的温度升高,导致固体电学性质的改变,这种情况就不是光电效应而是热电效应)。根据所用结的种类的不同,可分为PN结,PIN 结型,... 阅读详情

相关推荐

【Python实战解析】从数据爬取到房价预测:一个完整的数据科学项目流程拆解

本文详细拆解了一个完整的Python数据科学项目流程,从爬取长沙二手房数据到房价预测模型构建。通过实战案例,介绍了数据爬取、清洗、可视化及模型优化的关键技巧,帮助开发者掌握Python在数据分析中的应用,提升程序开发能力。

weixin_30379531的博客 412

【LeetCode】剑指 Offer 35. 复杂链表的复制 - Go 语言题解

【LeetCode】剑指 Offer 35. 复杂链表的复制 - Go 语言题解

weixin_44211968的博客 580

告别手写代码!用Simulink给TI F28335 DSP自动生成C代码(保姆级环境配置)

本文详细介绍了如何利用Simulink为TI F28335 DSP自动生成C代码,告别传统手写代码的低效与错误。通过保姆级环境配置指南和实战案例,帮助开发者快速掌握模型驱动开发方法,大幅提升嵌入式开发效率,特别适合需要频繁修改算法参数或团队协作的工程师。

weixin_30388677的博客 416

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

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

golang 相关内容分享 366

手把手教你用OpenCore在Dell Optiplex 3060上安装黑苹果(含ALC255声卡修复)

本文提供了一份详尽的指南,教你如何在Dell Optiplex 3060微型台式机上安装黑苹果系统。文章重点解决了使用OpenCore引导时的核心配置,特别是针对Intel UHD 630核显的驱动优化和Realtek ALC255声卡的修复方案,旨在帮助用户打造一个稳定可用的macOS工作站。

weixin_29275257的博客 789

第一章 初识SpringBoot

提供大量的自动配置Spring和第三方库,开发者可以根据项目需求选择相关的starters依赖,而无需手动配置大量的Spring配置文件,开箱即用,无需配置XML,无代码生成。Spring Boot与Spring Cloud等框架集成,为构建微服务提供了强大的支持,并通过Spring Cloud实现服务注册、负载均衡、熔断等功能。本质上讲,Spring Boot就是Spring,它做了那些本应我们去做的Spring Bean配置等工作。以上就是一个简单的Spring Boot应用的创建和运行过程。

Calvin的博客 1581

golang切片和数组拷贝(浅拷贝和深拷贝)

我们提到的深拷贝和浅拷贝,则指的是引用类型的值处理方案。数组和切片属于哪种? 浅拷贝指的是,把变量里面存的内存地址拷贝了,所指向的真实值并没拷贝。

西京刀客 1万+

COLMAP在Ubuntu下的编译陷阱与实战避坑指南——从环境配置到三维重建全流程

本文详细介绍了在Ubuntu系统下编译和配置COLMAP三维重建工具的全流程,包括环境准备、依赖库安装、CUDA加速配置以及常见编译问题的解决方案。通过实战案例演示了从图像特征提取到稠密重建的完整步骤,并提供了性能优化和问题排查的实用技巧,帮助用户高效完成三维重建任务。

weixin_29003437的博客 1048

LC 剑指 Offer 35. 复杂链表的复制

LC 剑指 Offer 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,0]] 示例 2: 输入:head = [[1,1],[2,1]] 输出:[[1,1],[2,1]]

qq_29760429的博客 509

3 ATK2(AUTOSAR OS)代码移植-目标硬件及编译环境简介

该部分介绍ATK2代码移植的目标硬件以及编译环境

xiaoduanduansad的博客 720

瑞芯微RK3588/RK3576平台采集BT1120(fpga)驱动调试记录

本文介绍了在RK3576/RK3588平台上采集FPGA传输的BT1120数据的方法。主要内容包括:1)硬件连接需确认管脚复用和图像格式(通常为uyvy_2x8);2)设备树配置要点,如I2C总线设置、BT1120模式指定等;3)驱动适配注意事项,包括时钟极性、分辨率格式等关键参数;4)测试方法,通过media-ctl和v4l2-ctl工具验证数据采集。文中特别指出RK3576和RK3588配置的通用性,并提供了常见问题的排查思路。

bingdund的博客 916

Golang | Leetcode Golang题解之第138题随机链表的复制

Golang | Leetcode Golang题解之第138题随机链表的复制

weixin_66442839的博客 576

ros入门(八)---TF坐标转换

TF(TransForm),就是坐标转换,包括了位置和姿态两个方面的变换。

weixin_51157015的博客 3389

TensorFlow与PyTorch选型指南:快速判断该先学哪一个的5个问题

上周同事甩来一个需求:训练一个商品图片分类器,一个月内部署上线,团队就两个人。选 TensorFlow 还是 PyTorch,我琢磨到半夜。学习计划仓库 machine-learning-for-software-engineers 把两个框架的学习资源都列进去了,却替你不下结论:选型答案取决于项目,不取决于谁"更强"。 ## 解决什么问题:先弄清两个框架各自治什么病 框架之间不是谁高谁低,而

gitblog_00988的博客 142

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

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

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

剑指offer35---复杂链表的复制

题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向 下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的 head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接 返回空) 思路:先复制链表的next节点,将复制后的节点接在原节点后,然后复制其它的 节点,最后取偶数位置的节点(复制后的节点)。 package Function; /** ...

xiaorui的博客 183

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

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

剑指 Offer 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,0]] 我的方法: 通过链表构造列表,再通过列表构造链表,很复杂!!! """ # Definition for a Node. clas

qq_48305176的博客 171

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

剑指 Offer 35. 复杂链表的复制

直接在原链表上复制每一个节点在原节点的后面(复制操作),1->2->3复制后为1->1->2->2->3->3。再让新的复制节点的random的指针域指向原节点指针的下一个节点,最后把新链表从原链表拆分出来。用两个Node型的动态数组ArrayList,一个为temp,另一个为res,temp存放原链表的每一个节点,res存放复制过来的每一个节点(节点中next指针域和random指针域都没有赋值),然后遍历res,给res中每一个节点的next指针域和random指针域赋值。可以用哈希+递归实现。

m0_51321956的博客 185

剑指Offer.35 复杂链表的复制

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null 解题思路 用HashMap保存<当前节点, 复制的当前节点> 遍历原有链表, 复制所有节点, 通过HashMap建立源节点和复制后的节点的联系 然后再次遍历原链表, 将原来节点的next和random的关系也复制给新节点 代码 /* // Definition for a Node. class Node {

qq_43269370的博客 93

EUPE三大评估任务完整指南:kNN分类、语义分割与深度估计如何快速上手

EUPE(Efficient Universal Perception Encoder,高效通用感知编码器)是 Meta AI 发布的一个**单模型、多任务**视觉编码器:同一套权重既能做图像分类,也能做密集预测和视觉语言建模。本文面向新手,带你**快速**看懂 EUPE 仓库内置的三大评估任务——**kNN 分类**(ImageNet-1k)、**语义分割**(ADE20K)与**深度估计**(

gitblog_00252的博客 182

找工作必做事项-剑指offer

自从上次重新学习了一下算法后,写了一篇总结的文章: 算法总结,写完之后总想去检验一下自己的水平如何。 记得毕业前找工作的时候,用C++刷了一遍剑指offer,都写在网易博客上http://wuhenpzq.blog.163.com/blog, 如今再看,网易博客已经关闭了,好在自己还能查看。当时刷题,更偏向于背题,不是基于对算法有足够的理解而解题的。 所以这次打算用Go再刷一遍剑指offer,看看自己是否真的提升了,同时也好比较一下C++和Go写算法题的区别。 刷完之后,发现对于大部分题,先确定使用哪种算法

699

剑指offer35复杂链表的复制

复杂链表的复杂,深拷贝

qq_36421001的博客 204

daidai-panel 一键更新链路完整解析:Watchtower、Docker CLI、二进制与 Magisk 四条路

daidai-panel 是一个轻量级定时任务管理面板(功能类似 Qinglong Panel),支持容器、裸机二进制和 Android Magisk 模块三种部署形态。面板部署到服务器上后,"面板本身怎么升级"是新手最常遇到的问题。好消息是:在「系统设置」→「概览」里点一下「检查系统更新」,面板会**自动识别你的部署方式**,并从 Watchtower 托管、Docker CLI 重建、二进制后

gitblog_00284的博客 186

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

该题为剑指offer面试题26 牛客网测试地址:https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba 热度指数:70797  时间限制:1秒  空间限制:32768K算法知识视频讲解 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个

zjkC050818的博客 1366

KMS_VL_ALL_AIO 完整教程:一条命令激活 Windows 11 与 Office 2024,每周自动续期

重装完 Windows,桌面右下角"激活 Windows"的水印去不掉,打开 Office 又提示授权无效。单文件脚本 KMS_VL_ALL_AIO 一次运行就能完成 Windows 11 和 Office 2024 的 KMS 激活,之后按周自动续期,不用找密钥、不用记到期时间。 ## 60 秒上手:从克隆到激活完成 1. 命令行执行 `git clone https://gitcode.c

gitblog_00518的博客 223

YuE2 音乐生成实战:从 song.json 歌词请求到可校验 ABC 谱的完整链路

YuE2 是一个带符号规划(symbolic planning)能力的音乐生成模型,仓库 `examples/` 目录内置了一组最小可运行输入:一份 `song.json`(歌词 + 风格)就能驱动"文本 → 音频 + 乐谱"的完整生成;再注入双声部 ABC 谱,还能对同一旋律的两次和声编配做符号级对比。校验端则配了一个纯标准库实现的 `abc_tools.py`,任何没有 GPU 的机器都能完成

gitblog_01037的博客 1004

《剑指offer》 相应 在线测试地址

《剑指Offer》面试题集收录汇总 面试题1 赋值运算符函数 不适合在线模式 面试题2 实现Singleton模式 不适合在线模式 面试题3 二维数组中的查找 已收录 面试题4 替换空格 已收录 面试题5 从头到尾打印链表 已收录 ...

weixin_30367169的博客 92
上一篇: 剑指 Offer 33. 二叉搜索树的后序遍历序列(golang版)
下一篇: ThinkPHP5.1源码分析-container容器篇
l_mofi
博客等级 码龄9年 7粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值