力扣 19 删除链表的倒数第N个结点

设一快一慢指针,快指针先走N步,等快指针到达最后一个元素时,此时慢指针恰好在倒数第N个元素的前一个元素,然后删掉就可以了。

 

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode* pre=head,*p=head;
        for(int i=1;i<=n;i++)
        {
            p=p->next;
        }
        if(p==NULL){
            head=pre->next;
            return head;
        }
        while(p->next!=NULL){
            pre=pre->next;
            p=p->next;
        }
        pre->next=pre->next->next;
        return head;
    }
};

 

posted @ 2023-03-17 15:53  我的秘密小屋  阅读(13)  评论(0)    收藏  举报