【LeetCode: 19. 删除链表的倒数第 N 个结点 | 链表 + 快慢指针】

【忍者算法】从快慢指针到倒数查找:优雅解决链表倒数问题|LeetCode 19 删除链表的倒数第N个结点 快慢指针技巧 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🚩 题目链接

⛲ 题目描述

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

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

🌟 求解思路&实现代码&运行结果


⚡ 链表 + 快慢指针

🥦 求解思路
  1. 该题通过快慢指针实现,先让快指针走k步,然后快指针和慢指针同时向后移动,直到快指针到达链表结束的位置,此时慢指针刚好到达倒数第n+1个节点,此时删除第n个节点即可。
  2. 具体实现代码如下所示:
🥦 实现代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 * int val;
 * ListNode next;
 * ListNode() {}
 * ListNode(int val) { this.val = val; }
 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode root = new ListNode(-1);
        root.next = head;
        ListNode fast = head;
        while (n-- > 0) {
            fast = fast.next;
        }
        ListNode slow = root;
        while (fast != null) {
            fast = fast.next;
            slow = slow.next;
        }
        slow.next = slow.next.next;
        return root.next;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

新手必看:LiteRadio 2c SE遥控器从开箱到飞行的完整指南(附常见问题解答) 本文为新手提供LiteRadio 2c SE遥控器的完整使用指南,涵盖从开箱到首飞的20个关键步骤。详细介绍了遥控器的功能设置、与无人机的对频技巧以及首飞注意事项,帮助用户快速掌握飞行控制,避免常见错误。特别适合无人机初学者阅读。 阅读详情

相关推荐

【分享】获取微信通讯录python代码形式实现

微信号”, “昵称”, “地区”, “备注”, “标签”, “签名”, “来源”5. 找到最后一个空格所在的位置(后一个就是真正的联系人了)当前微信号与上一个相同的时候,说明到底部了,可以跳出循环。3. 滚动鼠标到最顶部(防止已经滚动了一部分了)7.记录下上一个联系人的微信号。7. 无限循环按键盘下箭头。获取详情中的以下元素内容。6. 点击第一个联系人。4. 获取联系人列表。

程序员老狼专注开发aigc或客服系统应用 2894

leetcode 力扣算法题 快慢指针 双指针 19.删除链表的倒数第n个结点

定义一个快指针和一个慢指针都先指向头结点,然后快指针先走n步,然后快、慢指针同时走,发现当快指针走到链表结尾的时候,慢指针就刚好走到了要删除结点的前一个结点,那么此时只需要将慢指针的next指向慢指针next的next即可完成删除操作(就本题来说可以忽略释放删除结点这个操作,当然释放一下也可以)

samroom的博客 866

UBUNTU使用RTL8811CU网卡(包含树莓派)

下载驱动 从绿联中下载:链接 下载解压后,chmod Linux文件夹 sudo chmod -R 777 ./Linux/ 修改系统的BOOT Secure为disable,参考链接:链接 sudo apt install mokutil sudo mokutil --disable-validation 重启电脑后,按照提示选择change secure boot state,并输入对应的字母(并不是全部密码,而是第几个),选择disable即可 进入Linux文件夹,运行命令 ..

Hot_Ant的博客 6246

力扣热题100实战 | 第19期:删除链表的倒数第 N 个结点——快慢指针的经典配合

本文是力扣热题100实战系列的第十九篇,深度解析删除链表的倒数第 N 个结点这道经典链表题。作为LeetCode第19题,它是链表操作中的高频面试题,也是快慢指针技巧最经典的应用场景之一。题目要求给定一个链表,删除其倒数第 n 个节点并返回头结点。本文从最直观的两遍扫描法讲起,分析其两次遍历的不足,然后逐步引出快慢指针的核心解法,实现一趟扫描完成删除。通过图解和详细代码注释,帮助读者理解如何利用指针间距定位目标、如何处理删除头结点的边界情况、以及使用虚拟头节点的技巧如何简化代码。无论你是正在备战2026春招

LinuxSRE、k8s、运维、DBA、大数据 566

【超详细】磁力计数据读取--以IST8310为例

第一章讲了IST8310的特性,I2C通信,最高支持400kHz通信速率,14位或者16位自适应数据输出等特性第二章讲了内部结构第三章讲了电气特性第四章讲了如何联系他们然后数据手册就没了。。。在大疆的开发手册中找到了寄存器的手册,如下:点开I2C配置选项, 下图是配好的:观察IST8310的数据手册,发现其支持最大400kHz的I2C通信速率,也就是快速I2C模式,所以第一行I2C Speed Mode我们选Fast Mode同时不要忘记了在C板中I2C3的两个IO口分别是PA8和PC9(一般来说都是这两个

lmh_12138的博客 1万+

虚幻UE 增强输入-触发器

输入触发器(UInputTrigger): 使用经过修饰器修改的输入值,或者使用其他输入动作的输出值,来确定是否激活输入动作。

UE成长之路,欢迎大家的关注! 5464

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

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

weixin_45363293的博客 1056

Anylabeling与SAM协同:从智能标注到YOLO数据集构建的完整实践

本文详细介绍了Anylabeling与SAM协同标注的完整实践,从智能标注到YOLO数据集构建的全流程。通过结合SAM的自动分割能力和Anylabeling的交互式标注,显著提升标注效率,特别适合小样本、复杂形状和多类别标注场景。文章还提供了环境搭建、标注优化技巧以及YOLO格式转换的实用指南。

weixin_26873711的博客 461

LeetCode 19. 删除链表的倒数第 N 个结点 | 长度法、快慢指针、栈,三种最优解法

本文介绍了三种删除链表倒数第N个节点的方法。1)计算长度法;2)快慢指针法;3)栈方法。三种方法时间复杂度均为O(N),但快慢指针法空间复杂度最优,推荐作为面试首选解法。

2301_81099859的博客 287

Python 爬虫实战:于好大夫在线抓取医生评价数据,选择优质医疗服务

requests:用于发送 HTTP 请求,获取网页内容。或 lxml:用于解析 HTML 页面,提取目标数据。pandas:用于数据清洗和分析。matplotlib和seaborn:用于数据可视化。time:用于控制爬取速度,避免对服务器造成压力。通过本项目,我们实现了以下目标:使用 Python 爬虫抓取好大夫在线的医生评价数据。对数据进行清洗和分析,找出评价中的关键词和趋势。根据分析结果推荐优质医疗服务。

u014481728的博客 3403

YOLOv12改进策略【卷积层】| CVPR-2020 利用DynamicConv 动态卷积 结合A2C2f进行二次创新,提高精度

在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。

Limiiiing的博客 827

【力扣】19. 删除链表的倒数第 N 个结点 <链表指针、快慢指针>

【力扣】19. 删除链表的倒数第 N 个结点

学习笔记 761

【RT-DETR实战】112、NCNN模型转换与层实现支持:从模型文件到推理引擎的硬核实战

本文详细记录了将RT-DETR模型部署到NCNN框架的全过程及关键要点。作者首先遇到MultiHeadAttention等算子不支持的问题,通过ONNX中间转换和自定义层实现解决。文章具体介绍了PyTorch到NCNN的权重转换技巧、模型优化方法(包括量化和线程优化)以及调试经验,强调逐层对比输出、预处理检查和边界情况测试的重要性。最后分享了保持转换流程可复现性的实用建议,指出手动调试虽然耗时但能加深对模型的理解,体现了工程师在解决技术难题时的专业精神与成就感。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 41

leetcode19 【medium 快慢指针 常规方法】删除链表的倒数第N个结点

leetcode19 删除链表的倒数第N个结点 依旧是要找对规律!可以看到 想要用双指针解题 要不停地移动两个指针以求找到合适的输出答案位置!

一碗菜粥的博客 172

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

leetcode hot100 19.删除链表的倒数第 N 个结点 快慢指针 medium

如果 return head,结果是 [1, 2](错误);如果 return prehead.next,结果是 [2](正确)直接返回head不行吗,为什么要prehead = ListNode(-1)虽然有两个循环(for 和 while),但指针一共只从头走到尾一次。只额外申请了 prehead, fast, slow 这几个引用空间。个节点,需要找到它的前驱节点(即倒数第。

踩坑记录 439

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)

大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第15篇文章,主要讲解是LeetCode19. 删除链表的倒数第 N 个结点(双指针-快慢指针)。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。

JMFive的博客 1035

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

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

LeetCode 19 删除链表的倒数第 N 个结点(快慢指针经典题)

本文介绍了LeetCode第19题"删除链表的倒数第N个结点"的解决方案。核心思路是使用快慢指针:快指针先走N步,然后快慢指针同步前进,当快指针到达末尾时,慢指针正好位于待删除节点的前驱位置。为了处理删除头节点的情况,建议使用虚拟头节点(dummy)。文章提供了Python实现代码,分析了时间(O(n))和空间(O(1))复杂度,并指出了常见错误点,如忘记使用dummy节点、快指针步数错误等。最后用一句话总结了该算法的精髓:快指针先走N步,同步前进,慢指针将停在待删除节点的前驱位置。

qq_53362375的博客 258

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

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] 这题的解法很巧妙,定义两个指针,一个快指针a,一个慢指针b,首先定义一个虚拟节点,放在头结点之前,然后a,b分别指向这个虚拟节点,开始时让这个快指针先走

今晨的个人博客 627

【LeetCode19. 删除链表的倒数第 N 个结点】——链表,快慢双指针,虚拟头结点、利用栈

【LeetCode19. 删除链表的倒数第 N 个结点】——链表,快慢双指针,虚拟头结点、利用栈

weixin_51630192的博客 232

[LeetCode]19. 删除链表的倒数第 N 个结点(java实现)快慢指针

[LeetCode]19. 删除链表的倒数第 N 个结点(java实现)1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路(用一趟扫描实现):快慢指针,快指针先走n步,然后慢指针和快指针一起走,直到快指针走到终点(fast.next == null),此时慢指针指向的节点的下一个节点,就是需要删除的节点。此外,需要注意要删除的是第一个节点的情况。 3. 解法 解法:迭代法 /** *

cloud的博客 345

快慢指针---力扣(19.删除链表的倒数第N个结点)

简单介绍一下何为快慢指针。快慢指针就是定义两根指针,移动的速度一快一慢,以此来制造出自己想要的差值。这个差值可以让我们找到链表上相应的节点。 删除倒数第n个节点,那就等于是要我们先找出待删除元素前一个元素,也就是第n-1个节点。你肯定发现了,我们又把这个问题转化为找链表上的某个节点的问题了,这是快慢指针最擅长的场景。底下的题,是力扣的第十九题,正好可以用到快慢指针。 /** * Definition for singly-linked list. * public class ListNode {

qq_42946376的博客 345

【算法-LeetCode】19. 删除链表的倒数第 N 个结点(双指针/快慢指针)

19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) 发布:2021年9月27日23:39:35 问题描述及示例 给你一个链表,删除链表的倒数第 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] 来源:力扣(LeetCode) 链接:

赖念安的博客 190

Leetcode-19:删除链表的倒数第 N 个结点(快慢指针)

题目链接 https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 题目 给你一个链表,删除链表的倒数第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 输出...

道纪书生的博客 238

力扣-19. 删除链表的倒数第 N 个结点(快慢指针法)

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

heiyuyouye的博客 713

LeetCode Q19 删除链表的倒数第 N 个结点 快慢指针法

原题地址 暴力点的思路其实就是先遍历一次,知道整个链表的长度.然后再计数到倒数n个节点的前一个节点.让这个节点的next为下下个节点即可.(不考虑释放内存的事情) 我一开始想到的是还蠢一点的方法,就是每次遍历一个节点,都判断这个节点的n个节点后是不是null,是的话就找到了倒数的节点. 看了下题解,发现了更不错的解法.叫快慢指针法.即设置两个指针,一前一后,两个指针相隔n个节点,一起进行遍历.当后面那个指针遍历到尾节点时,前面那个指针指向的就是目标节点. /** * Definition for sin.

rglkt的博客 242

力扣笔记 ——【链表 虚拟节点与快慢指针】19. 删除链表的倒数第 N 个结点

输入:head = [1,2,3,4,5], n = 2。似乎有个循环链表找出口的题也是这种思路,快慢指针找到。输入:head = [1,2], n = 1。输入:head = [1], n = 1。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。输出:[1,2,3,5]

2301_79493928的博客 246
上一篇: 【LeetCode: 344. 反转字符串 | 双指针模拟】
下一篇: 【LeetCode: 134. 加油站 | 贪心算法】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值