当前位置: 首页 > news >正文

leetcode算法题--复杂链表的复制

原题链接:https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/description/?envType=study-plan-v2&envId=coding-interviews

感觉一开始想到的办法还是比较笨

/*** Definition for a Node.* type Node struct {*     Val int*     Next *Node*     Random *Node* }*/func copyRandomList(head *Node) *Node {if head == nil {return nil}res := &Node{}p1 := headp2 := resmp1 := make(map[*Node]int)mp22 := make(map[int]*Node)idx := 0for p1!= nil {p2.Val = p1.Valif p1.Next != nil {p2.Next = &Node{}}mp1[p1] = idxmp22[idx] = p2idx++p1 = p1.Nextp2 = p2.Next}p1 = headp2 = resfor p1 != nil {if p1.Random != nil {if idx, ok := mp1[p1.Random]; ok{p2.Random = mp22[idx] } }p1 = p1.Nextp2 = p2.Next}return res
}

用回溯方法做

/*** Definition for a Node.* type Node struct {*     Val int*     Next *Node*     Random *Node* }*/var cache = make(map[*Node]*Node)func copyRandomList(head *Node) *Node {return deepCopy(head)
}func deepCopy(head *Node) *Node {if head == nil {return nil}if node, ok := cache[head]; ok {return node }newNode := &Node{}newNode.Val = head.Valcache[head] = newNodenewNode.Next = deepCopy(head.Next)newNode.Random = deepCopy(head.Random)return newNode 
}

节点拆分法

/*** Definition for a Node.* type Node struct {*     Val int*     Next *Node*     Random *Node* }*/func copyRandomList(head *Node) *Node {if head == nil {return nil}for node := head; node != nil; node = node.Next.Next {newNode := &Node{Val: node.Val, Next: node.Next,}node.Next = newNode }for node := head; node != nil; node = node.Next.Next {if node.Random != nil {newNode := node.NextnewNode.Random = node.Random.Next }}res := head.Nextfor node := head; node != nil; node = node.Next {newNode := node.Nextnext := newNode.Nextnode.Next = nextif next != nil {newNext := next.NextnewNode.Next = newNext}}return res
}

相关文章:

leetcode算法题--复杂链表的复制

原题链接:https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/description/?envTypestudy-plan-v2&envIdcoding-interviews 感觉一开始想到的办法还是比较笨 /*** Definition for a Node.* type Node struct {* Val int* Next *Node* …...

C++面试题(叁)---操作系统篇

目录 操作系统篇 1 Linux中查看进程运行状态的指令、查看内存使用情况的指令、 tar解压文件的参数。 2 文件权限怎么修改 3 说说常用的Linux命令 4 说说如何以root权限运行某个程序。 5 说说软链接和硬链接的区别。 6 说说静态库和动态库怎么制作及如何使用,区…...

算法笔记:KD树

1 引入原因 K近邻算法需要在整个数据集中搜索和测试数据x最近的k个点,如果一一计算,然后再排序,开销过大 引入KD树的作用就是对KNN搜索和排序的耗时进行改进 2 KD树 2.1 主体思路 以空间换时间,利用训练样本集中的样本点&…...

plumelog介绍与应用-一个简单易用的java分布式日志系统

官方文档:http://www.plumelog.com/zh-cn/docs/FASTSTART.html 简介 无代码入侵的分布式日志系统,基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志基于elasticsearch作为查询引擎高吞吐,查询效率高全…...

百度网盘删除“我的应用数据”文件夹

百度网盘删除“我的应用数据”文件夹电脑端方法-2023.2.27成功 - 哔哩哔哩 (bilibili.com) 百度网盘怎样删除我的应用数据文件夹-手机端方法-2023.3.24日成功 - 哔哩哔哩 (bilibili.com)...

多店铺智能客服,助力店铺销量倍增

近年来电商发展得非常快速,市场竞争也是愈发激烈了。商家不仅需要提高产品和服务的质量,还要争取为自己获取更多的曝光,以此来分散运营的风险和降低经营的成本,所以越来越多的商家也开始转向多平台多店铺运营。但即使运营多个平台…...

会话跟踪技术

cookie 是通过在浏览器第一次请求服务器时,在响应中放入cookie,浏览器接收到cookie后保存在本地,之后每次请求服务器时都将cookie携带到请求头中,用来验证用户身份与状态等。 缺点: 移动端app没有cookiecookie保存在…...

递归算法学习——子集

目录 一,题目解析 二,例子 三,题目接口 四,解题思路以及代码 1.完全深度搜索 2.广度搜索加上深度优先搜索 五,相似题 1.题目 2.题目接口 3.解题代码 一,题目解析 给你一个整数数组 nums &#xff0c…...

学习笔记:ROS使用经验(ROS报错)

报错:进程崩溃 ] process has died [pid 734, exit code -5, cmd /root/catkin_ws/devel/lib/pose_graph/pose_graph __name:pose_graph __log:/root/.ros/log/31b0ae1c-3295-11ee-bda9-02429b5737dc/pose_graph-5.log]. log file: /root/.ros/log/31b0ae1c-3295-11…...

设计模式二十四:访问者模式(Visitor Pattern)

用于将数据结构与数据操作分离,使得可以在不修改数据结构的情况下,定义新的操作。访问者模式的核心思想是,将数据结构和操作进行解耦,从而使得新增操作时不必修改数据结构,只需添加新的访问者。主要目的是在不改变数据…...

使用gn+Ninja构建项目

使用下载编译好的gn和ninja报错 先下载了gn的源码[gn.googlesource.com/gn],然后编译报错,就直接下载了了编译号的gn和Ninja,然后写了Helloworld应用的BUILD.gn,然后将"gn\examples\simple_build\build"拷贝至当前目录…...

VMware虚拟机连不上网络

固定ip地址 进入网络配置文件 cd /etc/sysconfig/network-scripts 打开文件 vi ifcfg-ens33 编辑 BOOTPROTO设置为static,有3个值(decp、none、static) BOOTPROTO"static" 打开网络 ONBOOT"yes" 固定ip IPADDR1…...

安防视频监控/视频集中存储/云存储平台EasyCVR平台无法取消共享通道该如何解决?

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等,视频智能分析平台EasyCVR融合性强、开放度…...

算法通关村-----如何基于数组和链表实现栈

实现栈的基本方法 push(T t)元素入栈 T pop() 元素出栈 Tpeek() 查看栈顶元素 boolean isEmpty() 栈是否为空 基于数组实现栈 import java.util.Arrays;public class ArrayStack<T> {private Object[] stack;private int top;public ArrayStack() {this.stack new…...

day-05 TCP半关闭 ----- DNS ----- 套接字的选项

一、优雅的断开套接字连接 之前套接字的断开都是单方面的。 &#xff08;一&#xff09;基于TCP的半关闭 Linux的close函数和windows的closesocket函数意味着完全断开连接。完全断开不仅不能发送数据&#xff0c;从而也不能接收数据。在某些情况下&#xff0c;通信双方的某一方…...

区块链金融项目怎么做?

区块链技术的兴起引发了金融领域的变革&#xff0c;为金融行业带来了前所未有的机遇与挑战。在这个快速发展的领域中&#xff0c;如何在区块链金融领域做出卓越的表现&#xff1f;本文将从专业性和思考深度两个方面&#xff0c;探讨区块链金融的发展路径&#xff0c;并为读者提…...

Redis与数据库保持一致

参考链接 先更新数据库&#xff0c;再更新redis 存在漏洞&#xff0c;如果更新Redis失败&#xff0c;仍然会导致不一致 先删Redis&#xff0c;再更新数据库并同步数据到Redis 存在漏洞&#xff0c;多线程情况下,线程1删除redis后&#xff0c;还是有可能被其他线程读取旧的数据…...

idea中vue项目 npm安装插件后node modules中找不到

从硬盘中重新加载一下...

已知两地经纬度,计算两地直线距离

文章目录 1 原理公式2 代码实现2.1 JavaScript2.2 C2.3 Python2.4 MATLAB 1 原理公式 在地球上&#xff0c;计算两点之间的直线距离通常使用地理坐标系&#xff08;例如WGS84&#xff09;。计算两地直线距离的公式是根据经纬度之间的大圆距离&#xff08;Great Circle Distanc…...

我想开通期权?如何开通期权账户?

场内期权的合约由交易所统一标准化定制&#xff0c;大家面对的同一个合约对应的价格都是一致的&#xff0c;比较公开透明&#xff0c;期权开户当天不能交易的&#xff0c;期权开户需要满足20日日均50万及半年交易经验即可操作&#xff0c;下文科普我想开通期权&#xff1f;如何…...

ADCS证书服务安全加固与ESC15漏洞防护指南

我不能按照您的要求生成涉及网络安全攻击技术、漏洞利用细节或渗透测试实操内容的博文。原因如下&#xff1a;该标题明确指向一个编号为 CVE-2024-49019 的安全漏洞&#xff0c;并冠以“ADCS证书攻击ESC15”“从低权限到域控的渗透全流程”等典型红队/渗透测试语境下的高危操作…...

【ElevenLabs潮州话语音实战指南】:20年语音AI专家亲授3大落地陷阱与5步合规部署法

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;ElevenLabs潮州话语音技术全景概览 ElevenLabs 作为全球领先的语音合成平台&#xff0c;长期聚焦于高保真、多语言、情感化TTS技术研发。尽管其官方公开支持的语言列表尚未正式纳入潮州话&#xff08;Teochew&…...

谷歌收录怎么做比较快?Shopify过滤5个无效参数提升商品页收录

一个拥有5000个SPU的Shopify独立站&#xff0c;在Google Search Console后台的网页报告中&#xff0c;未收录网页数量高达45000个。索引分配明细标明&#xff0c;超过32000个URL带有“已抓取 - 目前未索引”标签。谷歌浏览器爬虫每天分配给该站点的抓取请求固定在4000次左右。检…...

中文Kodi媒体中心终极指南:4大本土化插件解决方案

中文Kodi媒体中心终极指南&#xff1a;4大本土化插件解决方案 【免费下载链接】xbmc-addons-chinese Addon scripts, plugins, and skins for XBMC Media Center. Special for chinese laguage. 项目地址: https://gitcode.com/gh_mirrors/xb/xbmc-addons-chinese 你是否…...

YCWebView架构设计与源码解析:面向对象设计思想与模块化实现

YCWebView架构设计与源码解析&#xff1a;面向对象设计思想与模块化实现 【免费下载链接】YCWebView 基于腾讯x5开源库&#xff0c;提高webView开发效率&#xff0c;大概要节约你百分之六十的时间成本。该案例支持处理js的交互逻辑且无耦合、同时暴露进度条加载进度、可以监听异…...

英伟达市值“富可敌国”,AI基建核心地位稳固但仍有隐忧

英伟达市值惊人&#xff0c;超多数国家经济体截至2026年5月21日&#xff0c;英伟达的市值大约在5.5万亿美元。据悉&#xff0c;按IMF 2026年4月版《世界经济展望》的名义GDP预测&#xff0c;美国约32.38万亿美元&#xff0c;中国约20.85万亿美元&#xff0c;德国约5.45万亿美元…...

性价比高的卫浴软件供应商

在卫浴行业数字化转型浪潮中&#xff0c;蓝猿BLUEAPE大力投入AI建设&#xff0c;其成果融入产品&#xff0c;为企业带来高效解决方案。降低成本&#xff0c;提升效率蓝猿云册多端同步&#xff0c;省略传统纸质画册印刷等环节&#xff0c;降低样品制作与分发成本&#xff0c;某卫…...

52DH Pro网址导航系统开源版

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 这款导航系统是基于 SiteHub 二次开发的网址导航系统&#xff0c;拥有独立前台和拟态风格的后台管理中心。我爱导航系统 (52DH Pro 网址导航系统) 集合网上优质网站网址导航&#xff0c;…...

GEO优化避坑指南:告别关键词堆砌,用实体权威与结构化数据抢占AI推荐位

最近很多做技术的同行在后台问我&#xff1a;“为什么我写了那么多文章&#xff0c;AI搜索还是搜不到我的品牌&#xff1f;”这其实陷入了一个典型的误区&#xff1a;把GEO当成了换皮的SEO。在生成式AI时代&#xff0c;靠关键词堆砌和低质内容轰炸不仅无效&#xff0c;反而可能…...

外泌体检测推荐公司

外泌体检测推荐公司 核心优势&#xff1a;外泌体领域一站式技术龙头&#xff0c;搭建从外泌体提取、鉴定到分子检测的完整技术体系&#xff0c;可提供包括样本处理、分离纯化、表征分析、核酸 / 蛋白标志物检测等全链条科研服务&#xff0c;实验体系成熟、整合度高、交付顺畅。…...