删除链表的倒数第N个节点

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

struct ListNode* removeNthFromEnd(struct ListNode* head, int n){
 struct ListNode* Head = malloc(sizeof(struct ListNode));
    Head->next = head;
    struct ListNode* p = Head;
    struct ListNode* q = Head;

    int count=0;
    while(p->next!=NULL){
        if(count<n) count++;
        else q=q->next;
        p=p->next;
    }
    if(count==n){
        q->next=q->next->next;
    }
    return Head->next;
}

执行结果:
通过
显示详情
执行用时:
4 ms
, 在所有 C 提交中击败了
53.51%
的用户
内存消耗:
5.6 MB
, 在所有 C 提交中击败了
75.00%
的用户
通过测试用例:
208 / 208

作者:油炸梅西
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn2925/?discussion=IsCa9i
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

//p,q都指向链表的第一个结点,让二者距离为n,当p指向最后一个结点,q就指向倒数第n-1个。
//最后返回头指针

LeetCode题目链接,剑之offer || 021

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值