![3c16478cdcd325f8d5782980f0d269e7.png](https://i-blog.csdnimg.cn/blog_migrate/6b3169afd7fdba6bcec7a8ccbc9d169e.jpeg)
题目
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
题解
笨方法
class
栈
这里用了哨兵节点,方便删除操作不需要判断边界情况
class
快慢指针
以下动图来自网络
![10aae37456c66fd4c15e60299518868c.gif](https://i-blog.csdnimg.cn/blog_migrate/2515cdc540a57fe68c7d65520baa506b.gif)
- 假设两个指针p、q
- q先移动n步
- p、q同时移动,当q为null时候,q.next就是待删除的节点
class