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;
    }
};


posted @ 2023-03-26 03:00  专心Coding的程侠  阅读(9)  评论(0编辑  收藏  举报