0
点赞
收藏
分享

微信扫一扫

leetcode 19

凶猛的小白兔 2022-03-11 阅读 63
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* removeNthFromEnd(struct ListNode* head, int n){
    //参考代码随想录
    //双指针+虚拟头节点
    struct ListNode*dummyHead=(struct ListNode*)malloc(sizeof(struct ListNode));
    dummyHead->next=head;
    struct ListNode*fast=dummyHead;
    struct ListNode*slow=dummyHead;
    //要想slow指向倒数第n个结点,需要让fast先走n+1步
    while(n--&&fast!=NULL)
    {
        fast=fast->next;
    }
    fast=fast->next;
    while(fast!=NULL)
    {
        slow=slow->next;
        fast=fast->next;
    }
    //此时slow指向待删除元素的前一个位置
    //接下来要删除该元素
    slow->next=slow->next->next;
    return dummyHead->next;

}
举报

相关推荐

0 条评论