去掉链表倒数第 n 个节点

思路

使用 fast slow 两个指针,fast 先移动 n 个节点,slow 再出发,此时两个指针相隔 n 个节点,fast 到达链表末尾时,slow 正好到达倒数第 n 的位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const removeNthFromEnd = function(head, n) {
if(!head || !head.next){
return null;
}

let slow = head;
let fast = head;

while(n > 0){
fast = fast.next;
n--;
}

if(fast){
while(fast.next){
slow = slow.next;
fast = fast.next;
}
slow.next = slow.next.next;
}
else{
head = head.next;
}

return head;
};