LeetCode 19 删除链表的倒数第N个节点
LeetCode 19 删除链表的倒数第N个节点 题目跳转链接
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* dummyHead=new ListNode(0);
dummyHead->next=head;
ListNode* fast=dummyHead;
ListNode* slow=dummyHead;
ListNode* temp;
// for(int i=0;i<=n;i++) //这里是<=n 多走一次
// {
// fast=fast->next;
// } //这样写有报错,fast会为空
while(n--&&fast!=nullptr)
{
fast=fast->next;
}
fast=fast->next; //fast先走一步,相当于slow慢了一步,删掉slow前面的那个节点
while(fast!=nullptr) //最后一个的下一个 即最后一个的 fast->next 是不满足条件的 进不去
{
fast=fast->next;
slow=slow->next;
}
temp=slow->next;
slow->next=slow->next->next;
delete temp;
return dummyHead->next;
}
};