栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

[力扣][C++]19. 删除链表的倒数第N个节点

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[力扣][C++]19. 删除链表的倒数第N个节点

class Solution {
private:
    int deleteLast(int n,ListNode* a){
        if(a->next == nullptr) return 1;
        int d = deleteLast(n,a -> next) + 1;
        if(d == n + 1) a->next = a->next->next;
        return d;
    }
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode H(0,head);
        deleteLast(n,&H);
        return H.next;
    }
};

这一题需要删除链表的倒数第N个节点,然而链表并不能随机访问,所以我们不能直接定位到倒数第N个节点。

题目要求我们在一次遍历后删除指定节点。
我们注意到,数据范围:
链表中结点的数目为 sz

1 <= sz <= 300 <= Node.val <= 1001 <= n <= sz

链表的长度比较短,最大仅为30,所以我们可以考虑用递归,求出每一个节点从后往前数的序号,并删除倒数第N个节点。

同时注意这里可以通过给原链表增加头节点来进一步简化代码。


题目链接

原创不易,感谢支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/722331.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号