19. Remove Nth Node From End of List
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
1 | 给定一个链表: 1->2->3->4->5, 和 n = 2. |
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
思路
两次遍历
简单方案:第一次遍历确定链表长度l,第二次遍历找到l-n+1的点,并删掉该点。为了处理复杂情况,在头节点前加入一个空节点作为新的头节点
1 | class Solution: |
一次遍历
两个指针用来遍历,其中fast指针比slow快n。当fast指针达到最后一个的指针时,slow指针正好达到要删除的节点的前一个节点。整个过程一次遍历。
时间复杂度: O(n)
1 | class Solution: |
LeetCode代码和详细解题报告 Github地址:https://github.com/zhengjingwei/LeetCode