方法:
- 要删除倒数第n个,先找到倒数第n个的前一个节点
- 使用快慢指针,快指针先走n步,再和慢指针一起走,快指针走到结尾,慢指针刚好在第n处
function removeNthFromEnd( head , n ) {
let fast = head;
let slow = head;
let pre;
for(let i = 0; i < n; i++) {
if(!fast) return head.next;
fast = fast.next;
}
if(!fast) return head.next;
while(fast) {
fast = fast.next;
pre = slow; // 前一个节点
slow = slow.next;
}
pre.next = slow.next;
return head;
}