算法日记 - Day8
两数相加这是在计算两个数之和因为是逆序所以正好是从个位开始计算到十位到百位需要考虑进位进位最大是1如果A链表中某个位置是空的类似于B链表中同一个位置的值 0进位使用指针分别遍历两个链表同位置的数计算两数以及前面的进位值的和如果值 10那么进位 1如此循环。classSolution{publicListNodeaddTwoNumbers(ListNodel1,ListNodel2){ListNodeheadnewListNode();ListNodecurhead;intcarry0;while(l1!null||l2!null||carry!0){intval0;vall1null?0:l1.val;vall2null?0:l2.val;valcarry;cur.nextnewListNode(val%10);curcur.next;carryval/100?0:1;l1l1!null?l1.next:null;l2l2!null?l2.next:null;}returnhead.next;}}因为最后l1l2都为null之后可能还有一个进位所以还要再往前多算一次删除链表中的节点删除节点正常是需要它的前一个节点才可以如果不行只能伪删除把后一个节点的值赋值到当前节点把后一个节点删除但是如果删除的是最后一个节点就不可以了没办法删除题目还说不是末尾节点那答案就明显了classSolution{publicvoiddeleteNode(ListNodenode){node.valnode.next.val;node.nextnode.next.next;}}这个还给到中等难度…删除链表的倒数第 N 个结点在删除的时候可以带上虚结点这样第一个结点的删除也可以和其他位置的删除操作一致不需要单独考虑了要删除从前数第n个位置的元素那么就需要第n-1个位置的信息使用左右指针先让右指针走n步走到第n个结点然后左右指针再同时走当右指针到最后一个结点的时候左指针就走到了倒数第n个位置的前一个元素。完美然后执行删除操作就可以了classSolution{publicListNoderemoveNthFromEnd(ListNodehead,intn){ListNodedummynewListNode(0,head);ListNodecur,pre;curpredummy;// cur 先走 n 步while(n--!0){curcur.next;}// 一块走while(cur.next!null){curcur.next;prepre.next;}pre.nextpre.next.next;// 删除利用 Java 自己的垃圾回收只要没人指向它就回收了returndummy.next;}}两两交换链表中的节点如果能修改值交换可太方便了嘿嘿因为要交换节点我们肯定是需要两个节点的前一个节点所以这里加个虚结点更好统一操作如果是奇数个节点最后一个节点不交换节点交换的示意图如下classSolution{publicListNodeswapPairs(ListNodehead){ListNodedummynewListNode(0,head);ListNodepredummy,curdummy.next;// cur 指向交换时的第一个结点pre.next 指向 curwhile(cur!nullcur.next!null){ListNodenxtcur.next;pre.nextnxt;cur.nextnxt.next;nxt.nextcur;// 注意 cur 和 nxt 交换了现在 nxt 在 cur 前面precur;curcur.next;}returndummy.next;}}随机链表的复制只考虑next还好但是有 random 就不知道它指向谁了有可能指向我们还没创建的节点所以我的思路是把所有的节点先创建好这样旧链表节点和新链表节点能够一一对应起来classSolution{publicNodecopyRandomList(Nodehead){if(headnull)returnnull;MapNode,NodempnewHashMap();Nodecurhead;// 先创建好新链表while(cur!null){mp.put(cur,newNode(cur.val));curcur.next;}curhead;// 依次赋值每个节点的 next 和 randomwhile(cur!null){NodenewCurmp.get(cur);// 可能指向 null所以取不到设置默认值newCur.nextmp.getOrDefault(cur.next,null);newCur.randommp.getOrDefault(cur.random,null);curcur.next;}returnmp.get(head);}}不用哈希表怎么做这我自己想不到我是抄灵神作业例如链表 1→2→3依次复制每个节点创建新节点并复制 val 和 next把新节点直接插到原节点的后面形成一个交错链表1 → 1 ′ → 2 → 2 ′ → 3 → 3 ′ 1→1→2→2→3→31→1′→2→2′→3→3′如此一来原链表节点的下一个节点就是其对应的新链表节点了然后遍历这个交错链表假如节点 1 的 random 指向节点 3那么就把新节点 1′的 random 指向节点 3 的下一个节点 3′这样就完成了对 random 指针的复制。最后从交错链表中分离出 1′→2′→3′即为深拷贝后的链表。⚠注意不能只删除节点 1,2,3因为题目要求原链表的 next 不能修改。classSolution{publicNodecopyRandomList(Nodehead){// 复制每个节点把新节点直接插到原节点的后面for(Nodecurhead;cur!null;curcur.next.next){cur.nextnewNode(cur.val,cur.next);}// 遍历交错链表中的原链表节点for(Nodecurhead;cur!null;curcur.next.next){if(cur.random!null){// 要复制的 random 是 cur.random 的下一个节点cur.next.randomcur.random.next;}}// 把交错链表分离成两个链表NodedummynewNode(0);Nodetaildummy;for(Nodecurhead;cur!null;curcur.next,tailtail.next){Nodecopycur.next;// 新节点tail.nextcopy;// 把新节点插在 tail 的后面构建新的链表cur.nextcopy.next;// 恢复原节点的 next}returndummy.next;}}

相关新闻

收藏!985硕士刚毕业就拿到百度大模型岗30k*16 Offer,值不值?小白程序员必看!

收藏!985硕士刚毕业就拿到百度大模型岗30k*16 Offer,值不值?小白程序员必看!

一位985硕士毕业生获得百度大模型开发岗30k*16年薪,引发热议。文章分析,百度薪资虽有严格职级标准,但考虑到其AI领头羊地位、业务落地能力及职业稳定性,此offer对想在AI领域深耕的小白程序员来说,是值得收藏的扎实起点…

2026/8/5 17:13:53 阅读更多 →
小白程序员必备:从0到1掌握AI Agent后端开发(含学习路线+面试考点)

小白程序员必备:从0到1掌握AI Agent后端开发(含学习路线+面试考点)

本文通过拆解北京1-3年薪资20-40K的AI Agent后端JD,提炼出企业招聘的核心能力:1)企业级Agent架构研发(微服务、工作流编排);2)RAGAgent工程化落地(解决真实痛点如准确率、成本控制&a…

2026/8/5 17:13:53 阅读更多 →
为什么选择本地音频转录:3步完成Buzz安装的完整指南

为什么选择本地音频转录:3步完成Buzz安装的完整指南

为什么选择本地音频转录:3步完成Buzz安装的完整指南 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 在数字时代&a…

2026/8/5 17:13:53 阅读更多 →

最新新闻

Plus Jakarta Sans:现代几何无衬线字体完全指南与实战应用

Plus Jakarta Sans:现代几何无衬线字体完全指南与实战应用

Plus Jakarta Sans:现代几何无衬线字体完全指南与实战应用 【免费下载链接】PlusJakartaSans Jakarta Sans is a open-source fonts. Designed for Jakarta "City of collaboration" program in 2020. 项目地址: https://gitcode.com/gh_mirrors/pl/Plu…

2026/8/5 17:58:08 阅读更多 →
AI正在掏空程序员人才梯队:初级工程师没了,高级工程师从哪里来?

AI正在掏空程序员人才梯队:初级工程师没了,高级工程师从哪里来?

关注 霍格沃兹软件测试开发 公众号,回复「资料」, 领取人工智能测试开发技术合集 最近,很多技术团队正在经历一种非常矛盾的变化。 一边是AI编程工具快速普及,代码补全、单元测试、Bug修复、文档生成,甚至跨文件修改,都…

2026/8/5 17:58:08 阅读更多 →
ExtensionPay.js实战案例:500K+收入背后的浏览器扩展变现策略

ExtensionPay.js实战案例:500K+收入背后的浏览器扩展变现策略

ExtensionPay.js实战案例:500K收入背后的浏览器扩展变现策略 【免费下载链接】ExtPay The JavaScript library for ExtensionPay.com — payments for your browser extensions, no server needed. 项目地址: https://gitcode.com/gh_mirrors/ex/ExtPay Exte…

2026/8/5 17:58:08 阅读更多 →
SwiftUI-Flow RTL支持详解:轻松构建多语言适配界面

SwiftUI-Flow RTL支持详解:轻松构建多语言适配界面

SwiftUI-Flow RTL支持详解:轻松构建多语言适配界面 【免费下载链接】SwiftUI-Flow Flow Layout implemented in SwiftUI 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftUI-Flow SwiftUI-Flow是一个强大的SwiftUI布局框架,提供了灵活的流式布…

2026/8/5 17:58:08 阅读更多 →
现代化Windows文件管理解决方案:RX-Explorer深度体验指南

现代化Windows文件管理解决方案:RX-Explorer深度体验指南

现代化Windows文件管理解决方案:RX-Explorer深度体验指南 【免费下载链接】RX-Explorer 一款优雅的UWP文件管理器 | An elegant UWP Explorer 项目地址: https://gitcode.com/gh_mirrors/rx/RX-Explorer RX-Explorer是一款基于UWP平台开发的现代化文件管理器…

2026/8/5 17:58:08 阅读更多 →
SETSMS:免费匿名短信批量管理工具深度解析

SETSMS:免费匿名短信批量管理工具深度解析

SETSMS:免费匿名短信批量管理工具深度解析 【免费下载链接】SETSMS Es una herramienta de automatizacin de spam de mensajes de texto a un nmero telefnico de manera gratuita y annima. Utiliza las herramientas (Quack - Impulse) para realizar el spam, a…

2026/8/5 17:57:08 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →