算法-链表篇05-删除链表的倒数第N个结点

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

力扣题目链接

题目描述

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

解题思路

先创建一个虚拟头结点pre,然后开始核心方法:使用两个指针来遍历链表,一个用于寻找最后一个节点p,一个用于寻找应该删除的结点cur。

先从虚拟头结点向后寻找n次,此时将cur指向pre,然后开始继续向后遍历链表。当p的next为空时,cur正好指向倒数第N+1个结点。

此时利用cur删除倒数第N个结点即可

题解

复制代码
class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode* pre = new ListNode(0, head);
        ListNode* cur = pre;
        ListNode* p = pre;
        for(int i = 0; i < n; i++){
            p = p->next;
        }
        while(p->next){
            p = p->next;
            cur = cur->next;
        }
        cur->next = cur->next->next;
        head = pre->next;
        delete pre;

        return head;
    }
};

总结

这道题使用双指针法进行计数还是很简单的,如果想不到也可以先遍历一遍链表记录下长度,然后再寻找,一样很简单的。

相关推荐
字节跳动的猫2 小时前
LikeShop 积分体系全链路改造:获取规则、订单抵扣与积分商品兑换二开
运维·数据结构
可乐ea2 小时前
AI Agent 工具调用准确性评测:选择错误与参数错误分开测
大数据·人工智能·算法·大模型·工具调用·ai智能体·agent评测
上位机妹子2 小时前
C 语言 数组删除指定元素(快慢指针法)
c语言·数据结构·算法
心中有你02143 小时前
【路径规划】A*寻路算法最通俗易懂讲解(C语言完整实现+详细注释)
c语言·开发语言·算法
papaofdoudou3 小时前
初中数学-整数整除判定法全解:从 2 到 19 的方法、依据与证明
算法
让学习成为一种生活方式4 小时前
啤酒花基因组与重测序--Nature Communications
人工智能·算法
l1t4 小时前
DeepSeek总结的OpenZL压缩变换器
c++·算法
想吃火锅10054 小时前
【leetcode】238.除了自身以外数组的乘积js
javascript·算法·leetcode
坤坤子吖4 小时前
算法学习——高精度加减乘除
c++·笔记·学习·算法
CQU_JIAKE4 小时前
10.1[A]2267,磐久UMX【上下文128K,KVCache部分]
算法