LeetCode hot 100—删除链表的倒数第N个节点

LeetCode-hot100题解—Day3 阅读详情

题目

给你一个链表,删除链表的倒数第 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 个结点,可以使用双指针法。具体思路是先让一个指针 fast 向前移动 n 步,然后再让另一个指针 slow 从链表头开始,与 fast 指针同时移动,当 fast 指针到达链表末尾时,slow 指针正好指向倒数第 n + 1 个结点,此时删除 slow 指针的下一个结点即可。

双指针法

时间复杂度:O(L), L 是链表的长度

空间复杂度:O(1)

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        // 创建一个虚拟头结点,方便处理删除头结点的情况
        ListNode* dummy = new ListNode(0, head);
        ListNode* fast = dummy;
        ListNode* slow = dummy;
        // 让 fast 指针向前移动 n 步
        for (int i = 0; i <= n; ++i) {
            fast = fast->next;
        }
        // 同时移动 fast 和 slow 指针,直到 fast 指针到达链表末尾
        while (fast) {
            fast = fast->next;
            slow = slow->next;
        }
        // 删除倒数第 n 个结点
        ListNode* temp = slow->next;
        slow->next = slow->next->next;
        delete temp;
        // 返回新的头结点
        ListNode* newHead = dummy->next;
        delete dummy;
        return newHead;
    }
};    
Cursor+Apifox MCP Server实战:5分钟搞定API自动化测试用例生成 本文详细介绍了如何利用Cursor IDE与Apifox MCP Server,在5分钟内将API文档自动转化为高质量的自动化测试用例。通过配置MCP Server建立数据桥梁,开发者可直接用自然语言指令,让AI基于真实接口规范生成可立即执行的pytest测试代码,大幅提升接口测试效率,特别适合快节奏的SaaS项目。 阅读详情

相关推荐

从仿真到部署:基于ROS2与Gazebo的UR5e机械臂全流程控制实践

本文详细介绍了基于ROS2与Gazebo的UR5e机械臂全流程控制实践,从环境准备、模型构建到控制器开发和仿真优化,最终实现真实机器人部署。通过实战案例和避坑指南,帮助开发者掌握机器人仿真与控制的关键技术,提升UR5e机械臂在物料分拣等任务中的性能与稳定性。

weixin_29184371的博客 288

力扣 Hot 100 刷题记录 - 删除链表的倒数第 N 个节点

是力扣 Hot 100 中的一道经典题目,题目要求如下:给你一个链表,删除链表的倒数第n个节点,并且返回链表的头节点。输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]解释:删除倒数第 2 个节点(值为 4)后,链表变为 [1,2,3,5]。输入:head = [1], n = 1输出:[]输入:head = [1,2], n = 1输出:[1]

weixin_50893711的博客 520

ADS高级技巧:用DAC控件实现多变量参数扫描(以S参数和阻抗匹配为例)

本文深入解析了ADS软件中DAC控件的高级应用,指导用户如何利用其实现多变量参数扫描。通过构建支持多变量的MDF文件,并将其与原理图变量动态映射,可以高效完成如S参数和阻抗匹配等复杂场景的联合仿真与可视化分析,显著提升射频电路设计的效率和深度。

3a9bq4r8t2y的博客 253

LeetCode hot100-删除链表的倒数第n个节点

根据栈「先进后出」的原则,我们弹出栈的第 n 个节点就是需要删除的节点,并且目前栈顶的节点就是待删除节点的前驱节点。1. 没有前驱节点:链表的头节点没有前一个节点,无法通过 前驱节点.next = 目标节点.next 的方式删除,需要单独编写逻辑修改 head 的指向。- 要删除头节点1时,只需让哑节点的 next 指向2( dummy.next = dummy.next.next ),和删除其他节点的逻辑完全一致。我们先遍历链表的长度,然后再从head向后到目标节点进行删除,返回新的头节点。

2503_90669258的博客 1568

PCB印刷电路缺陷检测实战:从数据集准备到模型训练全流程解析

本文详细解析了PCB缺陷检测从数据集准备到模型训练的全流程。重点介绍了PKU-Market-PCB数据集的特点与下载方法,并提供了数据格式转换、模型选择(如YOLOv8)与训练配置的实战代码。针对PCB小目标检测的难点,文章给出了数据分析和模型优化的具体策略,帮助读者构建高效的缺陷检测系统。

weixin_29065791的博客 546

数字麦克风PDM信号采集与STM32 I2S接口应用(二)

在使用STM32的数字麦克风I2S接口时,计算采样率让人头疼,芯片手册上没有明确的说法,而手册上的计算方法经过测试却和实验不符。借助搜索引擎,大部分资料都是来自于开发板卖家或开发板论坛,主要是咪头采集然后配置WM89系列解码芯片,然后配合FatFS、MP3解码等模式,主要是讲解I2S录音、存储、放音等。外文资料得到的也寥寥无几,也没有找到讲解STM32数字麦克风配置、计算的文档。加上网上资料转载、抄袭、浅尝辄止的笔记教程,这些更是让检索大海捞针,过程艰辛一言难尽,有些网文三言两语抑或作者都没有搞清楚随手一写

XIAOYOUDUODUO的博客 6054

力扣Hot100系列9(Java)——[链表]总结(中)(两数相加,删除链表的倒数第N个节点,两两交换链表中的节点,K个一组翻转链表)

本文总结了力扣Hot100中关于链表的四道题目解法。以"两数相加"和"删除链表的倒数第N个节点"为例,详细介绍了关键解题思路:使用虚拟头节点处理边界情况,通过双指针技巧(快慢指针)定位目标节点。重点解析了Java中对象引用的工作机制,并通过具体示例展示了代码执行过程。这些解法体现了链表问题的常见处理模式,包括哨兵节点、进位处理、指针同步移动等技术要点。

2402_89049045的博客 1460

MTK MT6833平台屏幕与TP驱动移植实战:从FAE伪代码到内核模块集成

本文详细介绍了在MTK MT6833平台上进行屏幕与TP驱动移植的完整实战流程。文章从解析供应商提供的初始化伪代码入手,逐步拆解了在LK阶段点亮屏幕、在内核层集成Panel驱动以支持休眠唤醒,以及移植并调试sitronix_ts触摸驱动的核心步骤与关键技巧,为嵌入式开发人员提供了从零到一集成新硬件的清晰指南。

rnn9storyteller的博客 441

【力扣hot100题】(028)删除链表的倒数第N个节点

怕越界所以先定义了一个头结点的头结点,然后定义快慢指针,快指针先走n步,随后一起走,直到快指针走到头,删除慢指针后一个节点即可。链表题还是太简单了。

s478527548的博客 259

S32K314 EB配置MCAL全模块讲解【Autosar——1 MCU模块详解】持续更新中

FIRC(fast internal RC Oscillator) :高速内部时钟,固定48MHZ;SIRC(Slow Internal RC Oscillator):低速内部时钟,固定32KHZ;FXOSC(Fast Crystal Oscillator Digital Controller):高速外部晶振(8-40MHZ),根据原理图选型进行配置;SXOSC():外部低速外部时钟,固定输入32.768KHZ;PLL_PHIn_CLK:时钟倍频锁相环时钟范围(640-1280MHZ);

qq_40488886的博客 1779

杰理AC695N系列芯片 LED7数码管使用教程

杰理AC695N数码管使用摘要 本教程介绍了杰理AC695N芯片驱动LED7数码管的实现方法: 硬件配置:支持7/12/13脚三种数码管类型,详细说明了7脚数码管的标准段码定义和GPIO接线方式。 软件设置: 通过修改配置文件启用LED7功能 配置GPIO引脚映射(PORTC/PORTA组) 选择与硬件匹配的真值表 层次架构:包含硬件层、驱动层、UI层和应用层的完整设计,支持数字、字符和图标显示功能。 实现要点包括正确配置引脚类型、选择真值表,并通过UI风格设置为LED7模式。

qq_42014563的博客 1344

Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点

Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点 题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫...

快乐划水程序猿的专栏 293

基于simulink的电气弹簧ES稳压控制模型仿真

若要补偿母线电压的谐波,需控制ES上的谐波,即在单闭环母线电压有效值控制的基础上,增加谐波抑制环节来进行谐波控制,现有的各种检测和抑制谐波的方法有采用模拟滤波器、傅里叶分析进行谐波分析、基于瞬时无功功率理论的方法等。当关键负载ZC为电流源型非线性负载时,电路原理图如图7所示,由于电流源型非线性负载可以等效为谐波电流源,关键负载电流ic便会含有谐波分量,导致输电线电流is和母线电压VS同样会含有谐波分量,导致供电质量的严重下降,对用电设备的正常工作造成影响。分别为流过线路阻抗、非关键负载、关键负载的电流,

FPGA/MATLAB学习教程/源码/项目合作开发 1631

【力扣hot100题】(127)删除链表的倒数第N个节点

【代码】【力扣hot100题】(127)删除链表的倒数第N个节点。

s478527548的博客 113

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LeetCode-Hot100 29.删除链表的倒数第n个节点

是的,本题的关键在于,我们可以先构建双指针,两个指针的间距是n,然后两个指针一起向后移动,这样当后边的指针移动到末尾的时候,左边的指针所在的位置刚好是n-1。本题的难点在于如何找到倒数第n个节点,由于链表是单向的,我们无法从末尾开始寻找。难道需要遍历两遍吗?第一遍确定链表长度,第二遍寻找倒数第n个节点?这样的话left就是最后一个节点,left.next就没有意义。还有一个难点啊,如果链表只有一个节点呢?为了解决这个问题,我们需要引入虚拟头节点。第一遍和第二遍可以同时出发。还有没有优化的空间?

2302_80987544的博客 67

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

leetcode hot 100-19. 删除链表的倒数第N个节点

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

Lucky小黄人的博客 247

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LeetCode 热题 HOT 100 19. 删除链表的倒数第N个节点

题目描述:      给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例1: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 解题思路: 1、快慢指针:      可以使用快慢指针slow和fast指针,由于要删除倒数第n个节点,因此首先要找到倒数第n个节点的前一个节点,为了方便操作,新建一个头节点ne.

剑指offer03——数组中重复的数字 249

力扣Hot100-19删除链表倒数第N个节点【双指针】【递归】

力扣Hot100-19 删除链表倒数第N个节点 文章目录力扣Hot100-19 删除链表倒数第N个节点全部刷题与学习记录原题目考查知识点自己的第一遍解法好的解法双指针递归 全部刷题与学习记录 【C++刷题学习笔记目录】 原题目 题目地址:19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 **进阶:**你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 输入:head = [1],

日月既往,不可复追 505

LeetCode 热题 HOT 100 Java题解——19. 删除链表的倒数第N个节点

LeetCode 热题 HOT 100 Java题解19. 删除链表的倒数第N个节点双指针,一遍遍历复杂度分析 19. 删除链表的倒数第N个节点 题目: 给定一个链表,删除链表的倒数第 nnn 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 双指针,一遍遍历 最简单可以想到的方法肯定是遍历一遍记住长度,之后第二次遍历删除倒数第nnn个,但是题目要求

qq_20067165的博客 274

LeetCode Hot100 链表19题-删除链表倒数第N个节点

我的想法是先定义一个能装ListNode的容器,把链表放进去,通过容器的特性获取链表的大小,再结合给定的倒数的n计算出正序的下标也就是pos,这个位置就是要删除的节点下标,然后用链表的特性让链表直接跳过这个节点,指向下一个节点但是这时候没有考虑到只有一个节点的情况,不能直接返回head,因为返回被删除的节点会报错,所以我们要单独考虑这种情况。

Colalion的博客 253

【leetcode hot 100】(链表)19 删除链表倒数第n个节点

双指针。

CCCTccc的博客 341

LeetCode hot100:019 删除链表的倒数第 N 个结点:快慢指针秒删链表倒数节点

摘要:本文介绍了删除链表倒数第n个节点的两种方法。双指针法是更优解,通过快指针先走n+1步,然后快慢指针同步移动,当快指针到达末尾时慢指针正好指向要删除节点的前驱节点,实现一次性遍历删除。虚拟头节点的使用简化了边界处理(如删除头节点的情况)。另一种计算链表长度的方法需要两次遍历。时间复杂度均为O(L),但双指针法效率更高。文中详细解释了算法原理、边界条件处理,并提供了Python实现代码。

m0_62396717的博客 640

力扣Hot100-19删除链表的倒数第n个节点(双指针)

要删除的节点Node为倒数第n个,当n已知后,要删除的节点与最后一个节点之间的距离是已知的,设为s。可以使用双指针p,q,将两个指针的距离调整为s+1,此时保持两个指针距离不变,对两个指针下移,直到指针q指向链表的最后一个节点时,指针p指向 要删除节点 的 前一个节点 。修改p->next=p->next->next便可实现删除倒数第n个节点。

qq_52241267的博客 546

力扣Hot100第19题——删除链表的倒数第N个节点(JAVA)

思路:双指针方式,设置fast指针和slow指针。fast指针比slow指针提前n个,当fast指针到尾巴null的时候,slow指针的next指针刚好指向要删除的结点。注意:如示例2中head=[1],n=1的情况,如果slow指向的是1的话,不存在slow.next.next。输入:head = [1,2,3,4,5], n = 2。输入:head = [1,2], n = 1。输入:head = [1], n = 1。进阶:你能尝试使用一趟扫描实现吗?输出:[1,2,3,5]

weixin_51350949的博客 323

力扣HOT100 - 19. 删除链表的倒数第N个节点

链表题目:哑节点、栈、快慢指针(双指针)注意fast从head开始,而不是dum。方法三:快慢指针(双指针)方法一:计算链表长度。

qq_61504864的博客 358

【LeetCode Hot100 链表(下)】 删除链表中的倒数第 N 个节点、两两交换链表中的节点、K个一组反转链表、随机链表的复制、排序链表、合并 K 个升序链表、LRU 缓存

LRU 缓存的核心思想是,当缓存达到最大容量时,移除最久未使用的元素(即链表尾部的元素),并将最近使用的元素移到链表头部。给定一个链表,将链表中的每k个节点一组进行反转,并返回反转后的链表。合并所有链表,并返回合并后的升序链表。给定一个链表,交换每两个相邻的节点,并返回链表的头节点。在这个实现中,我们使用了一个双向链表和一个哈希表(给定一个链表,要求你返回排序后的链表。给定一个链表,删除链表的倒数第。指针,指向链表中的某个节点或。个节点,并返回链表的头节点。给定一个链表,每个节点除了有。

Luo_LA的博客 1111
上一篇: LeetCode hot 100—数据流的中位数
下一篇: LeetCode hot 100—随机链表的复制
rigidwill666
博客等级 码龄7年 508粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

rigidwill666

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

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

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

打赏作者

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

抵扣说明:

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

余额充值