题目链接
英文链接:https://leetcode.com/problems/remove-nth-node-from-end-of-list
中文链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
题目详述
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
1 | 给定一个链表: 1->2->3->4->5, 和 n = 2. |
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
题目详解
- 使用双指针 first 和 second,一个先走,一个后走。
- 为了方便删除头结点的操作,可以新建一个哑结点作为辅助,让它临时充当头结点的角色。
- first 可以先走 n 步或 n+1 步,然后让两个指针一起走。
- 当 first 为 null 时,如果 first 先走 n 步,此时 second 指向待删除结点;如果 first 先走 n+1 步,此时 second 指向待删除结点的上一个结点。
1 | /** |