题目描述[原题链接][https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/]
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
算法描述
        首先预防链表会删完,添加一个虚拟节点d,令d->next=head即可;要删除倒数第n个节点,因为这个链表是单链表,只能单向遍历,要实现O(n)的复杂度,得有两个节点,使他们间距为n一起向前移动,当后面节点到了尾部,前面节点就在倒数第n个节点上,然后使当前节点的next指向后面节点的next即可;
 时间复杂度:一次遍历O(n)
C++代码
| 1 | class Solution { | 
Java代码
| 1 | class Solution { |