题意描述:
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

利用虚拟头结点,和双指针法。如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。
C++代码如下:
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* dummyhead = new ListNode(0);
dummyhead->next = head;
ListNode* slow = dummyhead;
ListNode* fast = dummyhead;
while(n-- && fast != NULL){
fast = fast->next;
}
fast = fast->next;
while(fast != NULL){
fast = fast->next;
slow = slow->next;
}
slow->next = slow->next->next;
return dummyhead->next;
}
};
本文介绍了一种使用虚拟头结点和双指针法高效删除链表倒数第N个节点的方法,并提供了C++实现代码。
377

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



