删除链表的倒数第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 <= 30
0 <= Node.val <= 100
1 <= n <= sz
进阶:你能尝试使用一趟扫描实现吗?
- Related Topics
- 链表
- 双指针
双指针
这道题典型的用快慢指针法来解决
将slow
和fast
指向头部,将fast
指针先往后走n步
然后两者齐头并进,当fast.next
为null
的时候,slow
已经在倒数第n-1个节点的位置了,此时进行删除操作
该方法的原理是利用步长,fast先走的那几步,在fast
到了链表末尾的null
的时候,slow
则表示的是倒数第n个节点,
因为这里需要执行删除操作,所以需要将fast
走到链表末尾即可
示例代码
1 | class Solution { |