【力扣21】删除链表的倒数第N个节点
题目
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
示例 1:

1 | 输入:head = [1,2,3,4,5], n = 2 |
示例 2:
1 | 输入:head = [1], n = 1 |
示例 3:
1 | 输入:head = [1,2], n = 1 |
提示:
- 链表中结点的数目为
sz 1 <= sz <= 300 <= Node.val <= 1001 <= n <= sz
实现代码
使用双指针方式,定义指针
p1、p2,都指向链表头节点,起始p1移动k步,那么p2移动n-k步的位置就是倒数第k的位置;题目需要的是删除倒数第
k位置的节点,那么,我们只需要找出k节点的前一个节点即可(或者说是找出倒数k+1位置的节点),即n-(k+1)的位置,如图;

1 | /** |
代码讲解
1 | ListNode tmp = new ListNode(-1); |
定义一个虚拟节点,目的是避免边界问题,比如k正好是第一个位置的节点,那么在删除时没有前缀节点,就会空指针
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 青柠!
评论


















































