题目:
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。1
2
3
4
5
6
7
8
9示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
解题思路:
一趟扫描思路:用两个指针,先让其中一个指针移动n步,然后两个指针同时后移,这样,当第一个指针移动到了最后一个节点,另一个指针刚好移动到待删除节点的前一个结点。(因为最后一个节点是倒数第一个节点)
Java:
1 | public ListNode removeNthFromEnd(ListNode head, int n) { |
Python:
1 | def removeNthFromEnd(self, head, n): |