题目描述
英文题目
Given a linked list, remove the n-th node from the end of list and return its head.
Example:
1 | Given linked list: 1->2->3->4->5, and n = 2. |
Note:
Given n will always be valid.
Follow up:
Could you do this in one pass?
中文题目
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
1 | 给定一个链表: 1->2->3->4->5, 和 n = 2. |
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
解决方法
方法一
- 描述
我们需要用两个指针来帮助我们解题,fast和slow指针。首先fast指针先向前走N步,如果此时slow指向空,说明N为链表的长度,则需要移除的为首元素,那么此时我们返回head->next即可,如果slow存在,我们再继续往下走,此时fast指针也跟着走,直到slow为最后一个元素时停止,此时fast指向要移除元素的前一个元素,我们再修改指针跳过需要移除的元素即可
- 源码
1 | /** |
题目来源
Remove Nth Node From End of List