如果要删除倒数第n个节点,让fast移动n+1步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的下一个节点就可以了。
var removeNthFromEnd = function(head, n) {
//创建虚拟节点,next指向head
let node=new ListNode(0,head)
//定义快慢指针都指向node
let s=k=node
//k需要比s快n+1,因为删除节点,需要找到前一个节点
while((n+1)>0){
k=k.next
n--
}
while(k){
k=k.next
s=s.next
}
//删除s+1的节点
s.next=s.next.next
return node.next
};