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

相关推荐
土司大王7 小时前
LeetCode hot100——实现 Trie (前缀树)
java·算法·leetcode
小七在进步7 小时前
类和对象(一)
java·数据结构·算法
麻瓜code8 小时前
【LeetCode】相交链表:双指针法,一次遍历找到交点
算法·leetcode·链表
charlie1145141918 小时前
浅谈C++的列表初始化std::initializer_list
开发语言·数据结构·c++·list·开源项目
hanlin039 小时前
刷题笔记:力扣第84题-柱状图中最大的矩形
笔记·算法·leetcode
一个初入编程的小白11 小时前
数据结构:二叉树链式结构的实现
数据结构
辰烨chenye14 小时前
LeetCode Hot 100 题解 · 普通数组篇
算法·leetcode·职场和发展
辰烨chenye17 小时前
LeetCode Hot 100 题解 · 二分篇
java·算法·leetcode
雨落在了我的手上19 小时前
Java数据结构(十一):优先级队列(堆)
数据结构
带多刺的玫瑰1 天前
Leecode#26刷题之删除有序数组中的重复项
数据结构·算法·leetcode