给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
示例 1:

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]示例 2:
输入:head = [1], n = 1
输出:[]示例 3:
输入:head = [1,2], n = 1
输出:[1]提示:
sz1 <= sz <= 300 <= Node.val <= 1001 <= n <= sz快慢指针:
fast,一个慢指针 slow 。n 个位置,再同时移动快慢指针,当快指针的下一位是 null 时候,慢指针就是要删除的位置。const removeNthFromEnd = (head, n) => {
let fast = head, // 快慢指针都指向链表头部
slow = head;
for (let i = 0; i < n; i++) { // 先移动块指针 n 个位置
fast = fast.next;
}
if (fast === null) { // 如果 n 是整个链表的长度,则快指针移完,就是 null,此时直接返回 head.next
return head.next;
}
while (fast.next) { // 同时移动 快慢指针,直至快指针指向 null
fast = fast.next;
slow = slow.next;
}
slow.next = slow.next.next; // 删除此时慢指针所指的位置
return head
}