/*
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
*
* @param head ListNode类
* @param n int整型
* @return ListNode类
*/
function removeNthFromEnd( head , n ) {
// 防止删除的第一位
let tHead = new ListNode(null);
tHead.next = head;
let slow = tHead, fast = tHead;
while(n > 0 && fast) {
fast = fast.next;
n--;
}
// 提前移动fast指针,
//倒数第n个需要fast走n下,他的前面一个需要fast走n+1下,因为是倒数n+1下是slow的precessor
fast = fast.next;
while(fast) {
fast = fast.next;
slow = slow.next;
}
slow.next = slow.next.next;
// 如果链表不够长,则直接返回链表
return tHead.next;
};
module.exports = {
removeNthFromEnd : removeNthFromEnd
};