【链表】LC 19.删除链表的倒数第 N 个结点
文章目录前言一、题目1、原题链接2、题目描述二、个人思路整理1、思路分析2、解题代码三、知识风暴前言本专栏文章为《LeetCode 热题 100》的刷题题解相关内容如有侵权立即删除。一、题目1、原题链接19.删除链表的倒数第 N 个结点2、题目描述二、个人思路整理1、思路分析也可以参考博主该篇博客【代码随想录】LC 19.删除链表的倒数第 N 个结点核心思路快慢双指针具体步骤引入虚拟头节点dummy-next head。设置虚拟头节点可以统一处理“删除头节点”的边界情况避免单独写if判断。构建滑动窗口间距让fast指针先走n 1 n 1n1步。此时fast与slow之间恰好相隔n nn个节点。双指针同步前进fast和slow同时向后移动直到fast nullptr即fast走到了链表末尾的空位置。此时slow恰好停在待删除节点的前一个节点。执行删除slow-next slow-next-next并释放被删除节点的内存C中建议手动delete避免内存泄漏。2、解题代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */classSolution{public:ListNode*removeNthFromEnd(ListNode*head,intn){ListNode*dummynewListNode(0,head);ListNode*fastdummy;ListNode*slowdummy;// fast先走 n 1 步for(inti0;in;i){fastfast-next;}// fast 和 slow 同时向后走直到 fast 越界while(fast!nullptr){fastfast-next;slowslow-next;}// 此时 slow 正好指向待删除节点的前驱ListNode*toDeleteslow-next;slow-nextslow-next-next;deletetoDelete;// 释放内存ListNode*ansdummy-next;deletedummy;returnans;}};复杂度分析时间复杂度O ( L ) O(L)O(L)仅需遍历一次链表L LL为链表长度。空间复杂度O ( 1 ) O(1)O(1)常数级变量空间。三、知识风暴快慢双指针是本题的核心思想让fast指针先走n 1 n 1n1步与slow拉开n nn个节点的间距然后两者同步前进。当fast走到链表末尾的空位置时slow恰好停在待删除节点的前驱从而一次遍历即可完成删除。算法核心思想固定间距fast先走n 1 n 1n1步使fast与slow之间恰好相隔n nn个节点。同步前进fast与slow同时向后移动直到fast nullptr此时slow指向待删除节点的前驱。一次遍历整个过程只需遍历链表一次时间复杂度为O ( L ) O(L)O(L)。虚拟头节点引入dummy统一处理「删除头节点」的边界情况避免单独写if判断。常见对比快慢双指针 vs 其他思路方法核心思路时间复杂度空间复杂度适用场景快慢双指针固定间距 同步前进一次遍历完成删除O ( L ) O(L)O(L)O ( 1 ) O(1)O(1)本题标准解法面试最常考察两次遍历先求链表长度再定位待删除节点的前驱O ( L ) O(L)O(L)O ( 1 ) O(1)O(1)思路直观但需遍历两次递归回溯递归到末尾后回溯计数找到待删除节点O ( L ) O(L)O(L)O ( L ) O(L)O(L)递归栈链表较长时可能栈溢出不推荐使用要点虚拟头节点dummy-next head统一处理删除头节点的边界情况代码更简洁。步数计算fast先走n 1 n 1n1步而不是n nn步这样slow最终停在待删除节点的前驱而非待删除节点本身。循环条件while (fast ! nullptr)让fast走到链表末尾的空位置时停止。删除操作slow-next slow-next-next并释放被删除节点的内存C 中建议手动delete避免内存泄漏。边界处理当n等于链表长度时删除的是头节点虚拟头节点可避免单独判断。算法变体与扩展删除链表中间节点fast每次走两步、slow每次走一步fast到末尾时slow恰好在中间对应 LeetCode 876。判断链表是否有环fast每次走两步、slow每次走一步若相遇则有环对应 LeetCode 141。寻找链表环的入口在判断有环的基础上让slow从头节点重新出发与fast同速前进相遇点即为环入口对应 LeetCode 142。寻找链表中点fast每次走两步、slow每次走一步fast到末尾时slow即为中点常用于归并排序的切分。与其他算法的对比快慢双指针O ( L ) O(L)O(L)时间、O ( 1 ) O(1)O(1)空间一次遍历即可完成删除是本题最优解。两次遍历先求长度再定位思路简单但需遍历两次效率略低。递归回溯代码优雅但递归深度等于链表长度长链表下可能栈溢出不具实用性。相关 LeetCode 例题19. 删除链表的倒数第 N 个结点本题快慢双指针876. 链表的中间结点快慢指针找中点141. 环形链表快慢指针判断是否有环142. 环形链表 II快慢指针找环入口

相关新闻

AI 写我的双端项目,只认鸿蒙不认小程序:祸根是注册表里的排列顺序

AI 写我的双端项目,只认鸿蒙不认小程序:祸根是注册表里的排列顺序

结论先说:tri-coding 拿哪套编码规范写你的代码,不取决于它多聪明,而取决于 tech-skills/registry.md 那张 25 行表格的排列顺序。我一个鸿蒙加微信小程序双端的项目,两端特征文件都命中了,它只加载了排在第 67 行的 a…

2026/9/3 5:32:27 阅读更多 →
水稻杂草分割数据集 水稻杂草的语义分割任务 来做数据集准备、模型配置、训练评估等

水稻杂草分割数据集 水稻杂草的语义分割任务 来做数据集准备、模型配置、训练评估等

6类水稻杂草分割数据集 数据集有图像904张 图像大小是512x512 VOC格式,可支持UNet、DeepLabv3、SegFormer等模型 可直接使用 图像未经任何亮度和噪声等预处理 使用UNet模型进行水稻杂草的语义分割任务,包括数据集准备、模型配置、训练评估以及构建一…

2026/9/3 5:32:27 阅读更多 →
电商比价系统不是爬虫练习,而是多源数据融合工程

电商比价系统不是爬虫练习,而是多源数据融合工程

简介:本资源是一套面向计算机专业本科生的毕业设计级商品比价系统实现方案,聚焦Python定向爬虫开发与多范式工程实践,适用于毕业设计、课程设计及综合大作业场景。压缩包共16个文件(含10个核心Python源码、3个编译缓存文件、1个SQ…

2026/9/3 5:32:27 阅读更多 →

最新新闻

电力设备红外图像目标检测数据集解析与YOLO实战指南

电力设备红外图像目标检测数据集解析与YOLO实战指南

简介:本资源是面向电力智能化运维与计算机视觉算法研发人员的红外图像目标检测专用数据集,聚焦变电站等典型电力场景下的设备部件识别任务,可支撑YOLO系列、Faster R-CNN等主流检测模型的训练与验证。数据集共3930张高质量红外图像&#xff0…

2026/9/3 7:43:32 阅读更多 →
2026年欧洲名义雇主公司EOR推荐榜单:助你高效用工的十款优质选择

2026年欧洲名义雇主公司EOR推荐榜单:助你高效用工的十款优质选择

本文将探讨2026年欧洲名义雇主公司EOR推荐榜单中的十款优质选择,帮助企业在全球化过程中提高用工效率。名义雇主(EOR)服务日益成为现代企业全球用工管理的重要组成部分。这些服务不光提供合规支持,还能优化招聘流程,降…

2026/9/3 7:43:32 阅读更多 →
【MATLAB例程】阿尔法截尾均值滑动窗口滤波(ATMF)图像处理。图像降噪与质量评价

【MATLAB例程】阿尔法截尾均值滑动窗口滤波(ATMF)图像处理。图像降噪与质量评价

原创代码,请勿翻卖。均经过测试,可正常运行 文章目录程序简介运行结果MATLAB源代码程序简介 本例程面向灰度图像局部噪声抑制与细节保持问题,独立实现阿尔法截尾均值滑动窗口滤波(ATMF)。程序将局部窗口像素排序&…

2026/9/3 7:43:32 阅读更多 →
货运搬家系统小程序开发从0到1(十四):上线清单,从“跑通“到“能收钱“还差什么

货运搬家系统小程序开发从0到1(十四):上线清单,从“跑通“到“能收钱“还差什么

系列最后一篇。本地跑通只算完成了一半,这篇把上线前的全部事项列成清单——每一项都是"不做就无法上线/无法收钱"的硬门槛。一、资质与备案(周期最长,最先启动)事项说明周期域名 ICP 备案小程序服务器域名必须备案过的…

2026/9/3 7:43:32 阅读更多 →
大语言模型时间感知与版本声明:从AI幻觉到可控智能体的工程实践

大语言模型时间感知与版本声明:从AI幻觉到可控智能体的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 7:43:32 阅读更多 →
电力设备红外图像数据集构建与YOLOv8目标检测实战指南

电力设备红外图像数据集构建与YOLOv8目标检测实战指南

简介:本资源是面向电力智能化检测领域的专业红外图像数据集,专为计算机视觉方向的算法工程师、电力AI应用研究者及高校科研团队设计,用于训练与验证电力设备部件的目标检测模型。数据集包含3930张高质量红外图像,覆盖避雷器、断路…

2026/9/3 7:42:31 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →