【LeetCode】19、删除链表的倒数第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]

提示:

  • 链表中结点的数目为 sz
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

**进阶:**你能尝试使用一趟扫描实现吗?

解题思路:

先计算出长度,再计算出第几个是需要被删除的结点,在这个节点的前一个结点停止,并删除下一个节点,然后返回。

代码解释:

dummy表示head前的一个结点,防止找不到头结点;

代码:

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
    struct ListNode* dummy=(struct ListNode*)malloc(sizeof(struct ListNode));
    dummy->next=head;
    int len=0;
    while(head!=NULL)
    {
        head=head->next;
        len++;
    }
    head=dummy->next;
    if(len==n) return dummy->next->next;
    for(int i=0;i<len-n-1;i++)
    {
        head=head->next;
    }
    if(head->next!=NULL) head->next=head->next->next;
    else return NULL;
    return dummy->next;
}
相关推荐
2501_933513046 分钟前
关于一种计数的讨论、ARC212C Solution
算法
Wu_Dylan7 分钟前
智能体系列(二):规划(Planning):从 CoT、ToT 到动态采样与搜索
人工智能·算法
散峰而望12 分钟前
【算法竞赛】栈和 stack
开发语言·数据结构·c++·算法·leetcode·github·推荐算法
知乎的哥廷根数学学派14 分钟前
基于多尺度注意力机制融合连续小波变换与原型网络的滚动轴承小样本故障诊断方法(Pytorch)
网络·人工智能·pytorch·python·深度学习·算法·机器学习
蚊子码农18 分钟前
算法题解记录-208实现Trie前缀树
运维·服务器·算法
2301_8002561120 分钟前
【人工智能引论期末复习】第3章 搜索求解2 - 对抗搜索
人工智能·算法·深度优先
程序猿阿伟28 分钟前
《量子算法开发实战手册:Python全栈能力的落地指南》
python·算法·量子计算
老鼠只爱大米1 小时前
LeetCode算法题详解 438:找到字符串中所有字母异位词
算法·leetcode·双指针·字符串匹配·字母异位词·滑动窗口算法
地平线开发者1 小时前
征程 6 | 平台 QAT 精度一致性问题分析流程
算法·自动驾驶
mjhcsp1 小时前
C++ Manacher 算法:原理、实现与应用全解析
java·c++·算法·manacher 算法