Leetcode(19) 删除链表的倒数第N个节点——快慢指针

3分钟搞懂欧式距离变换(EDT):从暴力算法到Felzenszwalb的演进史 本文系统梳理了欧式距离变换(EDT)从暴力算法到高效线性算法的演进历程。重点解析了光栅扫描算法和Felzenszwalb算法的核心思想与实现,并探讨了其在机器人路径规划中生成欧几里得符号距离场(ESDF)的关键应用,为开发者提供了清晰的算法选型与实战指南。 阅读详情

题目描述
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.

说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?

思路

比较常规。方法一:两次遍历,第一次记链表长度,第二次删除从列表开头数起的第 (L - n + 1) 个结点。方法二:设置快慢指针,快指针先走n + 1步,之后两个指针一起走,直到快指针为空,删除节点。
需要注意的是,我们将添加一个哑结点作为辅助,该结点位于列表头部。哑结点用来简化某些极端情况,例如列表中只含有一个结点,或需要删除列表的头部。

代码
/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
   ListNode* removeNthFromEnd(ListNode* head, int n) {
       ListNode * dummy = new ListNode(0);
       dummy -> next = head;
       ListNode * p = dummy, *q = dummy;
       for(int i = 0;i <= n;++i) p = p ->next;
       while(p != NULL){
           p = p->next;
           q = q ->next;
       }
       ListNode * tmp = q -> next;
       q -> next = tmp -> next;
       delete(tmp);
       return dummy->next;
   }
};

UEFI开发探索102 – ACPI探究01(UEFI配置表) (请保留-> 作者: 罗冰 https://blog.youkuaiyun.com/luobing4365) ACPI探究01(UEFI配置表)1 大致规划2 UEFI Configuration Table(配置表)3 代码实现 最近有项工作,是修改ACPI表。问题本身并不复杂,但是由于代码需要移植到Option ROM上,遇到不少奇怪的现象。因此,花了不少时间,对ACPI进行研究。 任务是完成了,我的好奇心又被勾起来了。准备发挥“格物致知”的信念,把我认为的ACPI各方面的知识,好好地捋一捋。 1 大 阅读详情

相关推荐

(R,线性回归)R语言里的模型诊断图(Residuals vs Fitted,Normal QQ , Scale-Location ,Residuals Leverage)

线性回归,是概率统计学里最重要的统计方法,也是机器学习中一类非常重要的算法。线性模型简单理解非常容易,但是内涵是非常深奥的。尤其是线性回归模型中的Diagnostics plot的阅读与理解一直被认为是线性回归中的一个难点。 在任何线性模型中,能够直接“lm”(模型有意义),既要考虑各个参数的t-test所得出的p-value,也要考虑总体模型F-检验得出的p-value。在这之后,还要清楚一个...

qq_35837578的博客 7万+

快慢指针:链表问题的利器

快慢指针是一种非常实用的链表问题解决技巧,通过合理使用快慢指针,可以高效地解决多种链表问题。掌握快慢指针的使用方法和常见应用场景,将有助于你在算法面试和实际开发中更好地应对链表相关问题。希望本文对你的学习和工作有所帮助。

ttkqwe的博客 619

Ubuntu20.04实时内核补丁PREEMPT_RT编译与安装全流程解析

本文详细解析了在Ubuntu20.04系统上编译与安装实时内核补丁PREEMPT_RT的全流程。从内核与补丁版本匹配、编译环境准备,到内核配置、编译排错,再到最终安装、验证与进阶优化,提供了手把手的实战指南,旨在帮助机器人、工业控制等对实时性有苛刻要求的开发者构建低延迟、高确定性的Linux系统。

weixin_29213827的博客 186

LeetCode:快慢指针实现删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? ListNode* removeNthFromEnd(ListNode* he...

凝视阳光呦 296

别再只会regress了!用Stata的csdid命令搞定多期DID的完整实操指南

本文详细介绍了如何在Stata中使用csdid命令进行多期DID分析,解决传统DID方法在交错处理场景下的局限性。通过完整的实操指南,包括环境搭建、核心语法、结果解读和高阶应用,帮助研究者更准确地评估政策效果,适用于计量经济学和实证研究领域。

weixin_30236595的博客 582

【机械臂算法】基于最小惯性参数集的动力学辨识仿真实践

本文深入探讨了机械臂动力学参数辨识的核心挑战与解决方案,重点阐述了基于最小惯性参数集的理论与方法。通过分析PUMA560实例,详细介绍了利用QR分解法或符号推导法获取可辨识参数集,并系统讲解了从激励轨迹设计、仿真数据采集、线性系统求解到模型验证的完整实践流程,为高精度动力学建模与控制奠定了坚实基础。

weixin_29054399的博客 376

leetcode 27 移除元素

leetcode 27 移除元素

大草的博客 390

四阶龙格库塔方法求解一次常微分方程组

四阶龙格库塔方法求解一次常微分方程组一、写在前面二、四阶龙格库塔方法三、使用四阶龙格库塔方法求解一次常微分方程组 一、写在前面 龙格库塔方法是数值求解常微分非线性方程的有利工具,计算精度较高,通过缩短步进距离和增加阶数可以进一步控制误差范围。工程上较为常用的是四阶龙格库塔算法(R-K4),在计算收敛的情况下往往可以得到比较好的结果。 二、四阶龙格库塔方法 这里简单介绍一下算法的具体实现过程,不做详细的推导。其求解的问题是形如方程: y˙=f(y,t),其中t∈[t0,t1]初值y(t0)=c0 \dot{y

HelloWorldTM的博客 2万+

快慢指针——找出链表倒数第k个节点

来源:剑指Offer 参考:https://www.e-learn.cn/content/qita/2102473 思路:设置两个指针,slow和fast都从头结点开始,fast先向前走k步,此时二者相差k个节点;从这里开始,两个指针以相同速度向后移动,保持二者始终相差k步。当fast到达链表尾部时,slow则指向倒数第k个节点。 代码: /** * Definition for si...

cunane的博客 516

电磁炉线圈加热仿真全流程:用Ansys Maxwell分析涡流效应与热损耗

本文详细介绍了使用Ansys Maxwell进行电磁炉线圈加热仿真的全流程。通过构建2D轴对称涡流场模型,深入分析了高频下的涡流效应、趋肤效应与热损耗分布,为优化线圈设计、提升加热效率与均匀性提供了量化依据和实用指南。

sss66的博客 963

彻底卸载Ubuntu双系统,并完美回收100G空间给D盘

本文记录了安全卸载Ubuntu双系统并回收磁盘空间的全过程。作者首先通过Windows命令行彻底清除Ubuntu启动项,避免GRUB引导报错;随后在磁盘管理中删除Linux分区,将100G未分配空间合并至相邻的D盘。针对C盘空间不足问题,作者采用Dism++清理系统文件,并将用户文档、聊天记录等迁移至扩容后的D盘。最终实现了引导纯净、空间合理分配的目标,特别强调分区扩展必须遵循"相邻原则",建议通过间接迁移而非直接扩容来优化系统盘空间管理。

2403_85993278的博客 1512

【双指针 快慢指针】19 删除链表倒数第N个元素

题目 给定一个链表,删除链表的倒数第n个节点,并且返回头结点 分析 两次遍历:首先第一次遍历的得到长度。 第二次遍历时,因为删除节点需要有被删除节点的前一个节点。考虑到只有一个节点、两个节点的情况这种极端情况。需要定义一个head前指针 代码 ListNode p1 = head; int len=0; while(p1!=null){ len++; p1 = p1.next; } int rem = len-n; /*因为删除节点需要有被删除节点的前一个节点。 考虑到只有一个节点、两个节点

qq_42215827的博客 226

速腾聚创激光雷达复现FAST-LIO

记录复现FAST-LIO算法的过程和,代码梳理和理解。FAST-LIO的简化版、注释版。速腾激光雷达

abanchao的博客 2928

Day04 链表 leetcode力扣24.两两交换链表中的节点(利用虚拟头结点)19.删除链表的倒数第 N 个结点(灵活使用快慢指针)

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。先看清题目,是两两交换链表中的节点,不是交换节点的值,并且是原地交换理解完题目的意思,可以看出这是两两分组进行交换,那么只需要找出每次交换的规律即可与反转链表相似,这里可以利用虚拟头节点来便于操作我们知道交换两个节点的步骤,假设虚拟头结点为dummy,交换node1和node2节点(节点位置如下:虚拟头结点=》node1=》node2)

weixin_45363293的博客 1056

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

leetcode19.删除链表倒数第N个节点 快慢指针

题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 可以两遍扫描,第一遍求出长度。代码略,运行时间8ms。 使用快慢指针实现一遍扫描,运行时间4ms。 解题思路 快慢指针 两指针初值都是head 快指针先走n个 然后两个一起走

HzauTriste的博客 338

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

力扣19-删除链表的倒数第N个节点【快慢指针】

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 官方的答案 class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy = new ListNo.

城溪羡鱼的博客 132

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LeetCode 19. 删除链表的倒数第N个节点(快慢指针)

给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n保证是有效的。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remo...

无知的渣渣的博客 404

LeetCode·19.删除链表的倒数第N个节点·快慢指针

快慢指针

m0_64560763的博客 342

LeetCode:19. 删除链表的倒数第N个节点(快慢指针)

问题描述: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list 著作权归领扣网

stackempty2的博客 197

[LeetCode 中等 链表+快慢指针]19. 删除链表的倒数第N个节点

题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 快慢指针 快指针先走n步 之后两个指针再一起走 当快指针走到终点时 慢指针就在要被删除的节点位置 /** * Definition for singly-linked list. *

weixin_50088096的博客 108

leetcode 19 删除链表的倒数第N个节点(快慢指针)

给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1-&gt;2-&gt;3-&gt;4-&gt;5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1-&gt;2-&gt;3-&gt;5. 说明: 给定的n保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 我们需要两个指针p1,p2,让p1先走n步,当p1走到终点,...

yrk0556的博客 336

leetcode: 19.删除链表的倒数第n个节点(双指针,快慢指针)

链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ leetcode上链表的题目挺多,很多题目的方法可以相互借鉴。 这道题主要难点在于题目要求一次遍历,可以采用快慢指针的方法,让快指针先前进n个节点,然后快慢指针同时前进,这样当快指针最终指向null的时候,慢指针会指向倒数第n+1个节点,可以很方便地实施删除。...

Gomamon的博客 213

LeetCode19删除链表的倒数第N个节点(快慢指针)

要求一趟扫描需要用快慢指针 让快指针比慢指针快,使得中间相隔n个,当快指针指向null时,慢指针指向删除节点的前驱结点。但是需要特别注意删除头结点的情况,如果不特殊处理的话,快指针会指向null的null,所以我们需要建立虚拟头结点,用一个哨兵结点指向头结点。让慢指针指向哨兵结点,快指针指向头结点后再让快指针先走n次。 public class Solution19 { public class ListNode { int val; ListNode next; .

qq_43434328的博客 157

【LeetCode #19 题解】 删除链表的倒数第N个节点(快慢指针实现)

一、题目 & 题解 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 代码如下: /** * Definition for singly-linked list. * struct ListNode { * int val; * struct L

|~~~热爱生活、努力学习的小伙汁~~~| 530

快慢指针—删除链表的倒数第N个节点(leetcode 19)

题目描述 给你一个链表,删除链表的倒数第 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...

guoxinian的专栏 312

LeetCode19 删除链表的倒数第N个节点(快慢指针/滑动窗口)

题目链接:leetcode19 题目大意 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 解题思路 双指针/滑动窗口 『剑指offer』有道和这题类似的,那题是找到倒数第k个点,但不用删除。链接。这题由于需要删除,所以找到倒数第k+1个元素,但可能不存在第k+1个元素,即k==n的case,最后特判一下就行了。

小胡同的诗 197
上一篇: Leetcode(15)三数之和——双指针碰撞
下一篇: Leetcode(31)下一个排列
softwareX4
博客等级 码龄9年 21粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值