019.删除链表的倒数第 N 个节点——通过手绘图和 LinkedList 源码的讲解,你一定看得懂
题意
给你一个链表,删除链表的倒数第 n 个节点,并且返回链表的头节点。
难度
中等
示例
示例 1:

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1
输出:[]
输入:head = [1,2], n = 1
输出:[1]
进阶:你能尝试使用一趟扫描实现吗?
分析
看到这道题,其实很容易想到 LinkedList 的 remove 方法,对吧?知道 remove 方法是如何实现的,就能写出这道题的题解。

我也曾在《二哥的 Java 进阶之路》上讲过 remove 方法的源码,其实现方式也非常简单,先遍历找到对应的节点,通过 node 方法实现,内核用的是 for 循环。

找到节点后,将节点的前一个节点的 next 指向节点的下一个节点;将节点的下一个节点的 prev 指向节点的前一个节点,这样就将节点从链表中删除了。

也就是前面提到的 unlink 方法。
LinkedList 其实比 LeetCode 这道链表的题复杂,因为 LinkedList 是双向链表,而 LeetCode 这道题是单向链表,下面是 LeetCode 为我们定义的链表 ListNode。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { th...
已加入星球,可直接知识星球授权登录
二哥编程星球目前包含:
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺
回复