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

  1. 删除链表的倒数第 N 个结点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

示例 1:

输入:head = [1,2,3,4,5], n = 2

输出:[1,2,3,5]

示例 2:

输入:head = [1], n = 1

输出:[]

示例 3:

输入:head = [1,2], n = 1

输出:[1]

在评论区看到的一个大佬的递归代码很简洁, 思路巨清晰

思路: (类似双指针的理解)

通过递归方法一直遍历到最后一个节点,然后从最后一个节点开始计数,当数量=n时,直接返回节点即可,如果链表长度不到n,就直接返回原链表

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
int cur=0;
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        if(!head) return NULL;
        head->next=removeNthFromEnd(head->next,n);
        cur++;
        if(n==cur) return head->next;
        return head;
    }
};

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

相关推荐
sin_hielo2 小时前
leetcode 2110
数据结构·算法·leetcode
panzer_maus2 小时前
归并排序的简单介绍
java·数据结构·算法
摆烂且佛系3 小时前
B+树的“页分裂“机制
数据结构·b树
麦格芬2303 小时前
LeetCode 763 划分字母区间
算法·leetcode·职场和发展
福尔摩斯张4 小时前
C++核心特性精讲:从C语言痛点出发,掌握现代C++编程精髓(超详细)
java·linux·c语言·数据结构·c++·驱动开发·算法
月明长歌5 小时前
【码道初阶】【LeetCode 110】平衡二叉树:如何用一个“Magic Number”将复杂度从O(N²)降为 O(N)?
linux·算法·leetcode
yaoh.wang5 小时前
力扣(LeetCode) 14: 最长公共前缀 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
历程里程碑5 小时前
C++ 9 stack_queue:数据结构的核心奥秘
java·开发语言·数据结构·c++·windows·笔记·算法
仰泳的熊猫5 小时前
1108 Finding Average
数据结构·c++·算法·pat考试
炽烈小老头5 小时前
【每天学习一点算法 2025/12/15】环形链表
学习·算法·链表