给定一个链表,删除链表的倒数第 n 个节点并返回链表的头指针
例如,
给出的链表为: 1-> 2-> 3 ->4 ->5 1→2→3→4→5, n= 2n=2.
删除了链表的倒数第 nn 个节点之后,链表变为1-> 2-> 3-> 5 1→2→3→5.
使用的是快慢指针
这里要注意的是,先要把fast走完之后,slow再走
/*
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
*
* @param head ListNode类
* @param n int整型
* @return ListNode类
*/
function removeNthFromEnd( head , n ) {
// write code here
let f = head;
let s = head;
// 快慢指针最开始的时候,指向的是head
// n 是需要删除的倒数第n个节点,让快指针先走n步
while(n > 0) {
f = f.next
n--
}
// 如果快指针===null slow开始走
if(f === null) {
s = s.next;
return s
}
// 如果快指针有next,那就快慢指针一起走
while(f.next) {
s = s.next
f = f.next
}
// 删除节点操作
s.next = s.next.next;
return head
}
module.exports = {
removeNthFromEnd : removeNthFromEnd
};
这篇博客介绍了如何利用快慢指针法在链表中删除倒数第n个节点。首先,快指针先走n步,然后快慢指针同时移动,直到快指针到达链表尾部。最后,慢指针的下一个节点即为需要删除的节点,将其删除即可。这种方法有效地解决了链表操作的问题。

被折叠的 条评论
为什么被折叠?



