给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
思路:快慢指针
1.建立虚拟节点0,fast向前走n+1步
2.fast与slow同步走,这样fast与slow之间相差n
3.如果fast==null,说明删除的是头节点
4.如果fast!=null,正常处理
var removeNthFromEnd = function(head, n) {
let dummy = new ListNode(-1,head)
let fast = dummy
let slow = dummy
for(let i=0;i<=n;i++){
fast=fast.next
}
//删除头节点
if(fast==null){
head = head.next
}
else{
while(fast){
slow = slow.next
fast = fast.next
}
slow.next = slow.next.next
}
return head
};