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 个结点

相关推荐
zephyr0513 分钟前
链表实现O(n log n)时间复杂度的排序——归并排序详解
java·数据结构·算法
XWalnut1 小时前
LeetCode刷题 day37
java·数据结构·算法·leetcode
爱跳舞的烤冷面2 小时前
自学嵌入式第19天(数据结构篇——栈)
数据结构
evans在进步3 小时前
LeetCode 74:搜索二维矩阵——Java 虚拟一维数组与二分查找详解
java·leetcode·矩阵
星轨初途3 小时前
LeetCode 热题 100——day11 滑动窗口最大值
数据结构·c++·算法·leetcode·职场和发展
rannn_11112 小时前
【力扣hot100】链表专题|160、206、234、141、142
java·算法·leetcode·链表·面试·开发
营养充电站13 小时前
VS Code Git 工作树:解锁多分支并行开发的高效体验
leetcode·决策树·逻辑回归·散列表·模拟退火算法
良木林14 小时前
子串 - LeetCode hot 100
算法·leetcode·职场和发展
蒸蒸yyyyzwd15 小时前
秋招不熟悉力扣学习笔记1
笔记·学习·leetcode
LuminousCPP16 小时前
数据结构-双向循环链表
c语言·数据结构·笔记·链表