news 2026/5/10 3:48:05

[19] Remove Nth Node From End of List 删除链表的倒数第N个节点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[19] Remove Nth Node From End of List 删除链表的倒数第N个节点

[19] Remove Nth Node From End of List

力扣题目链接

1. 快慢指针
1.1 思想

使用快慢指针一趟扫描,找到待删除节点的前驱节点。

  • 创建两个指针 fast 和 slow,都初始化为dummyHead
  • 建立距离: 让 fast 指针先向前移动 n 步。此时,fast 和 slow 之间就形成了一个固定的、长度为 n 的“窗口”。
  • 同步前进: 然后,同时移动 fast 和 slow 指针,一步一步向后,直到 fast 指针到达链表的最后一个节点(fast->next == nullptr)。
  • 精准定位: 在同步前进的过程中,因为 fast 和 slow 之间始终保持着 n 个步长的距离,所以当 fast 到达链表末尾时,slow 指针恰好位于倒数第 n 个节点的前一个节点
  • 快慢指针之间的距离为n个步长,当快指针为倒数第一个节点时,他与最后一个节点的距离为0,此时慢指针与最后一个节点的距离为n,所以慢指针指向的是倒数n+1个节点。
1.2 AC代码
ListNode *removeNthFromEnd(ListNode *head, int n) { // 创建虚拟头节点,统一操作 ListNode *dummyHead = new ListNode(0); dummyHead->next = head; ListNode *f = dummyHead; ListNode *s = dummyHead; // 快指针先向前移动 n 步 while (n-- && f != nullptr) { f = f->next; } // 快慢指针同步前进,直到 fast 到达最后一个节点 // 此时 slow 正好在待删除节点的前一个位置 while (f->next != nullptr) { f = f->next; s = s->next; } // 删除操作 ListNode *toDelete = s->next; s->next = toDelete->next; delete toDelete; // 释放内存 // 返回新链表的头节点 ListNode *realHead = dummyHead->next; delete dummyHead; return realHead; }
1.3 时空复杂度

时间复杂度: O(N)。其中 N 是链表的长度。快指针总共遍历了整个链表一次。

空间复杂度: O(1)。只使用了 fast, slow 等常数个额外指针变量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 23:22:02

Font Awesome 品牌图标

Font Awesome 品牌图标(Brands Icons)详解 Font Awesome 的 Brands Icons 是专门用于展示知名品牌、公司、社交媒体、软件和技术平台的图标集合。这些图标都是矢量形式,基于官方商标设计,但 Font Awesome 强调:所有品…

作者头像 李华
网站建设 2026/4/30 23:16:51

SQLite Studio终极指南:一站式数据库管理解决方案

SQLite Studio终极指南:一站式数据库管理解决方案 【免费下载链接】sqlite-studio SQLite database explorer 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-studio 在数据驱动的时代,高效管理SQLite数据库成为开发者和数据分析师的必备技…

作者头像 李华
网站建设 2026/4/30 23:16:53

SQLPad查询结果缓存终极配置技巧:让你的重复查询速度提升10倍

SQLPad查询结果缓存终极配置技巧:让你的重复查询速度提升10倍 【免费下载链接】sqlpad Web-based SQL editor. Legacy project in maintenance mode. 项目地址: https://gitcode.com/gh_mirrors/sq/sqlpad 还在为SQLPad中重复查询的缓慢响应而烦恼吗&#xf…

作者头像 李华
网站建设 2026/5/6 10:27:28

Windows系统性能加速神器:OpenSpeedy完全使用手册

Windows系统性能加速神器:OpenSpeedy完全使用手册 【免费下载链接】OpenSpeedy 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy 还在为电脑卡顿、程序响应慢而烦恼吗?今天为大家推荐一款真正免费且高效的Windows系统加速工具——OpenS…

作者头像 李华
网站建设 2026/5/9 16:29:25

2026软件测试岗必问的100个面试题【含答案】

一、测试理论 1.什么是软件测试? 答:软件测试是通过执行预定的步骤和使用指定的数据,以确定软件系统在特定条件下是否满足预期的行为。 2.测试驱动开发(TDD)是什么? 答:测试驱动开发是一种开…

作者头像 李华
网站建设 2026/4/30 23:43:05

UABEA完全攻略:解锁Unity游戏资源提取与修改的终极指南

UABEA(Unity Asset Bundle Extractor Avalonia)是一款专为新版本Unity设计的开源资源提取工具,能够深度解析和操作Unity游戏中的各种资源文件。无论你是游戏开发者、资源分析师,还是游戏爱好者,UABEA都能为你打开一扇通…

作者头像 李华