news 2026/4/22 17:18:11

day138—快慢指针—删除链表的倒数第N个结点(LeetCode-19)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
day138—快慢指针—删除链表的倒数第N个结点(LeetCode-19)

题目描述

给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。

示例 1:

输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]

示例 2:

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

示例 3:

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

提示:

  • 链表中结点的数目为sz
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

解决方案:

这段代码的核心功能是删除单链表中倒数第 n 个节点,采用「虚拟头节点 + 快慢指针」的经典方法实现,时间复杂度O(n)、空间复杂度O(1),能高效且优雅地处理删除头节点等边界情况。

核心逻辑

代码通过快慢指针制造n步的间距,让快指针先走到指定位置,再同步移动快慢指针,最终定位到倒数第 n 个节点的前驱节点,完成删除:

  1. 虚拟头节点初始化:创建虚拟头节点node并指向原链表头head,避免删除原头节点时的边界问题;
  2. 快慢指针拉开间距:快指针fast先从虚拟头节点出发,向前移动n步,此时快慢指针间距为n
  3. 同步移动找前驱:快慢指针同步向后移动,直到快指针走到链表末尾(fast->next为空),此时慢指针slow恰好指向「倒数第 n 个节点的前驱节点」;
  4. 删除目标节点:将慢指针的next指向其下下个节点,跳过倒数第 n 个节点,完成删除;
  5. 返回结果:返回虚拟头节点的next(即删除后的链表头)。

总结

  1. 核心思路:利用快慢指针的n步间距,将 “找倒数第 n 个节点” 转化为 “找正数的前驱节点”,避免先遍历统计长度的二次遍历;
  2. 关键设计:虚拟头节点解决了 “删除原链表头节点” 的边界问题,无需额外判断;
  3. 效率特点:仅一次遍历完成查找和删除,时间O(n),空间仅用几个指针,是该问题的最优解法。

函数源码:

/** * 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) {} * }; */ class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* node=new ListNode(); node->next=head; ListNode* slow=node; ListNode* fast=node; for(int i=0;i<n;i++){ fast=fast->next; } while(fast->next){ fast=fast->next; slow=slow->next; } //ListNode* nxt=slow->next; slow->next=slow->next->next; //delete nxt; return node->next; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 9:20:20

6种方法教你永久关闭win11系统自动更新【保姆级教程】,win11关闭自动更新的详细方法步骤

Win11系统自动更新怎么关闭&#xff1f;最近有不少小伙伴们想要彻底对Win11系统的自动更新进行关闭&#xff0c;但不知道应该怎么去操作。那我们在碰到这个问题要怎么办呢&#xff1f;还不清楚的小伙伴们可以不用担心&#xff0c;下边介绍几种常用的禁止win11自动更新的详细方法…

作者头像 李华
网站建设 2026/4/18 14:30:52

深度测评!继续教育必看的9款AI论文写作软件TOP9推荐

深度测评&#xff01;继续教育必看的9款AI论文写作软件TOP9推荐 2026年继续教育AI论文写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文写作工具在学术领域的应用越来越广泛。对于继续教育群体而言&#xff0c;如何高效完成…

作者头像 李华
网站建设 2026/4/17 23:08:18

博客与短视频谁更能成就你的个人品牌?

人物&#xff1a; 老派博客&#xff08;博哥&#xff09;——文字爱好者&#xff0c;崇尚深度与持久 新锐短视频&#xff08;抖妹&#xff09;——视觉达人&#xff0c;追求传播与互动 场景&#xff1a; 虚拟的“品牌咖啡馆”内&#xff0c;两人隔着桌子面对面坐着。空气中弥漫…

作者头像 李华
网站建设 2026/4/18 11:19:45

YOLO26 改进 - 注意力机制 | IIA信息整合注意力(Information Integration Attention ):精准保留空间位置信息,平衡精度与计算成本 | TGRS2025

前言 本文提出信息整合注意力&#xff08;IIA&#xff09;机制&#xff0c;并将其集成到YOLO26中用于遥感图像语义分割。传统CNN难捕捉全局信息&#xff0c;Transformer计算复杂&#xff0c;现有基于Mamba的方法未充分考虑局部信息。IIA利用图像特征空间位置不变性&#xff0c…

作者头像 李华
网站建设 2026/4/17 19:53:06

15.ACS725 电流检测

分享一颗电流传感器IC芯片&#xff0c;ACS725芯片&#xff0c;这颗芯片是汽车级的&#xff0c;工作温度在-40到150度&#xff0c;很多电流采集的场合可以使用。ACS725提供了一种小封装&#xff0c;低成本的表贴封装&#xff0c;而且目前在国内也有可以替换的一些IC出现&#xf…

作者头像 李华
网站建设 2026/4/18 9:42:24

【课程设计/毕业设计】基于springboot的学车驾校线上学习课程安排管理系统的设计与实现【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华