leetcode-19:删除链表的倒数第N个节点

vmware vsphere 证书过期告警处理方法 vSphere Clinet 管理页面出现“证书告警” ,检查证书未发现现有证书有过期现象 阅读详情

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

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.

说明:

给定的 n 保证是有效的。

进阶:

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

一次遍历的思想:

使用一个前指针一个后指针,中间间隔的距离为n,那么当后指针指向尾结点的时候(last.next = null),前指针的后一个结点即为要删除的结点。1->2->3->4->5 删除第三个元素时,last指针先先后走n=3步指向了4(last从head结点开始走),然后让前指针pre和后指针last一起向后走,直到last.next == null(即last指向了5),此时pre指向结点2,要删除的倒数第三个结点即为pre的下一个结点,只要执行pre.next = pre.next.next;返回head结点即可。
考虑特殊情况如果要删除的结点为第一个结点,那么n就是链表的长度,此时last先向后移动n步后将变为null。也只有这一种情况(删除头结点)下,last才会变成null,所以判断一下返回 head.next即可。

一次遍历:

package Solution.ninteen;
import Solution.two.ListNode;

//执行用时 : 2 ms, 在Remove Nth Node From End of List的Java提交中击败了96.87% 的用户
//内存消耗 : 34 MB, 在Remove Nth Node From End of List的Java提交中击败了97.09% 的用户

//一次遍历

public class NthFromEnd2 {
   public ListNode removeNthFromEnd(ListNode head, int n) {
        if(head ==null ||head.next==null){
            return null;
        }
        ListNode pre,last;
        last = head;
        pre = head;
        for(int i = 0;i<n;i++){
            last = last.next;
        }
        if(last == null){
            return head.next;
        }
        while(last.next!=null){
            last = last.next;
            pre = pre.next;
        }
        pre.next = pre.next.next;
        return head;
        
    }
}

两次遍历:

package Solution.ninteen;

import Solution.two.ListNode;

//执行用时 : 1 ms, 在Remove Nth Node From End of List的Java提交中击败了99.73% 的用户
//内存消耗 : 37.4 MB, 在Remove Nth Node From End of List的Java提交中击败了68.51% 的用户

//两次遍历

public class removeNthFromEnd {
    class Solution {
        public ListNode removeNthFromEnd(ListNode head, int n) {
            if(head ==null || head.next == null){
                return null;
            }
            int length = 1;
            ListNode p = head;
            ListNode q = head;
            while(p.next!=null){
                p = p.next;
                length++;
            }
            if(n==length){
                return q.next;
            }
            for(int i=0;i<length-n-1;i++){
                q= q.next;
            }
            q.next = q.next.next;
            return head;
        }
    }
}
SAP FICO 资产会计AA后台配置 (上) 输入折旧表“CZ11”如有外币计价的资产,则需指定外币计价的资产折旧范围,以及规则。因为在设置资产类型时,需指定一个对应的 资产编号范围、资产账户确定类型(便于分配自动会计科目)、屏幕格式规则(便于设置资产字段必填与否)。因为在设置资产类型时,需指定一个对应的 资产编号范围、资产账户确定类型(便于分配自动会计科目)、屏幕格式规则(便于设置资产字段必填与否)。新增资产类型:Z101 固定资产-房屋及建筑物新增资产类型:Z301 固定资产-房屋及建筑物。 阅读详情

相关推荐

支持找回微信删除好友!一款人人可用的全能微信数据分析工具

找回删除好友、查看删除记录、恢复聊天信息....

1725

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

题目描述(难度中) 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 链接 https://leetcode-cn.com/probl...

Jiewang的博客 285

AI赋能传染病建模:从数据到动力学模型的本地实践指南

这次我们来看一个将 AI 与传染病动力学建模结合的前沿方向。想象一下,你手头有一份流感爆发的病例数据,传统的建模方法可能需要复杂的微分方程和大量的手动调参,而 AI 模型能否直接从数据中“学习”出传播规律,甚至自动跑通整个建模流程?这正是当前研究的热点。根据《Nature》的最新综述,人工智能正在重塑传染病流行病学建模,从参数推断、趋势预测到多源数据融合,AI 技术为解决传统建模中的计算瓶颈和数据难题提供了全新路径。 对于开发者、数据科学家或公共卫生领域的研究者而言,最关心的是:这套方法能不能在本地跑起来?

weixin_29051811的博客 298

LeetCode 19. 删除链表的倒数第N个节点 java

LeetCode 19. 删除链表的倒数第N个节点 java 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例 : 给定一个链表: 1-&gt;2-&gt;3-&gt;4-&gt;5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1-&gt;2-&gt;3-&gt;5. 说明: 给定的 n 保证是有效的。 JAVA 代码: class Solution { ...

lele的专栏 390

MySQL等保三级合规实践:如何安全配置root账户的本地与受信主机登录策略

本文详细介绍了MySQL在等保三级合规框架下如何安全配置root账户的本地与受信主机登录策略。通过分析root账户的特殊保护需求,提供三种安全加固方案,包括限制访问范围、限定登录IP和完全禁止远程登录,并指导创建安全的远程管理账户。文章还涵盖了密码策略强化、日志审计配置和网络层防护等关键合规要求,帮助用户实现MySQL的等保三级全面合规。

weixin_42522964的博客 259

WIFI和BT测试(射频工程师)

买不了吃亏买不了上当,我卖的是技能,你收获的是经验。

m0_58834499的博客 599

【LeetCode 刷题日】19.删除链表的倒数第n个节点

本文介绍了使用双指针法解决LeetCode第19题"删除链表的倒数第N个节点"的算法。通过创建虚拟头节点和设置快慢指针,先让快指针移动n步,再让快慢指针同步移动直到链表末尾,此时慢指针正好指向要删除节点的前驱节点。文章详细解析了算法原理,并配以链表[1,2,3,4,5]删除倒数第2个节点为例,图解了快慢指针的移动过程。最后强调了虚拟头节点的重要性以及边界条件的处理,为链表操作提供了清晰的解题思路。

任岁月风干理想再也找不回真的我 798

PDD psnl_verification anti_content 生成顺序与环境校验说明

K不是明文 URL,而是从当前href再派生出来的一小段摘要值。页面 URL 变,K会跟着变但K不是直接肉眼可读的 URL 字串可以把它理解成“URL 的短摘要字段”。这一步是最容易被误解的地方。它吃进去的是压缩后的中间串不是直接吃环境字段它内部还带有长度预算 / 字符映射 / 位置处理逻辑所以最终看到的环境字段 bytes协议头deflate 压缩自定义编码多层叠加后的结果。先把字段总包做再把压缩结果转成raw再拼fTail最后走做字符级输出因此,当前看到的协议字段流。

码王吴彦祖的博客 68

Leetcode 19. 删除链表的倒数第N个节点

Leetcode 19. 删除链表的倒数第N个节点 难度:中等 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 方法题解以及图...

思过留痕 599

【毕设全程指导】基于YOLOv8的包装商品检测与可视化系统(SKU110K实战)

本文介绍了一个基于YOLOv8的包装商品检测与可视化系统毕业设计方案。项目采用SKU110K数据集,通过CSV转TXT格式转换适配YOLO模型训练,包含详细的环境搭建、模型配置和训练流程。系统实现了包装商品的自动化检测,并开发了Tkinter可视化界面进行交互式检测展示。该方案结合产业应用需求与技术深度,既具备实用价值,又能充分展示学生的技术能力,适合作为计算机视觉相关专业的毕业设计选题。整个项目从数据准备到界面开发完整覆盖,帮助学生系统掌握目标检测项目的完整实现流程。

LXY_LOVE36的博客 145

Win10 系统下VisualStudio2022 配置点云库 PCL1.13.0

Win10 系统下VisualStudio2022 配置点云库 PCL1.13.0与Win10 系统下 VisualStudio2019 配置点云库 PCL1.11.1流程基本相同,主要区别有两点: * 从PCL1.12.0版本开始需要进行`启用增强指令集`的设置。 * 附加依赖项添加的内容不同。

点云侠的博客 7005

LeetCode19-删除链表的倒数第N个节点

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

lyd1995的博客 203

NX二次开发PK获取对象类型

PK_ENTITY_ask_class(),获取对象类型建议用这个函数,比较通用,包含所有对象类型,可以替代UF_MODL_ask_edge_type(),UF_MODL_ask_body_type(),UF_MODL_ask_face_type()等函数。

qq_39541524的博客 827

LeetCode19:删除链表的倒数第n个节点

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

季风的博客 233

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

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

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

leetcode 19. 删除链表的倒数第N个节点 题目详情 题目链接 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 我的代码 /** * Definition for singly-linked list. * struct L

qq_33789406的博客 224

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode 19删除链表的倒数第N个节点

LeetCode 19删除链表的倒数第N个节点 题目简述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 给定一个链表: 1->2->3->4->5, 和 n = 2. 删除了倒数第二个节点后,链表变为 1->2->3->5. 思路:两次遍历 第一次遍历求出链表长度 第二次遍历删除指定节点 注意删除头结点的特殊情况 ...

XBlog 135

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

leetcode19----删除链表的倒数第N个节点

19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。[1,2,3,5]示例 2:[]示例 3:[1]你能尝试使用一趟扫描实现吗?

xinxin的博客 1254

Leetcode19.删除链表的倒数第N个节点(C语言)

Leetcode19.删除链表的倒数第N个节点(C语言) 数据结构-链表:算法与数据结构参考 题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。例: 输入: 1->2->3->4->5, 和 n = 2. 输出: 1->2->3->5. 思路: 利用快慢指针 代码: /** * Definition for singly-lin...

jeanlu的博客 709

Leetcode19(力扣19):删除链表的倒数第N个节点

方法一:用哈希表保存链表并统计链表节点总数 class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { unordered_map<int,ListNode*> m; ListNode* cur=head; int count=0; while(cur) { m[count++].

weixin_44537258的博客 153

力扣(LeetCode 19)删除链表倒数第n个节点 python

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

qq_41318002的博客 304

力扣19题:删除链表的倒数第N个节点

题目:给定一个链表,删除链表的倒数第 n 个结点

weixin_47337647的博客 655

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

摘要: 本文介绍了如何删除链表倒数第N个节点的解法。题目给定链表头节点和整数N,要求删除倒数第N个节点并返回新链表。通过双指针法(快慢指针),只需一次遍历即可定位并删除目标节点。具体步骤包括:创建哑节点处理边界情况,快指针先移动N步,然后快慢指针同步移动直至快指针到达末尾,此时慢指针指向待删除节点的前驱,执行删除操作即可。该方法时间复杂度O(L)(L为链表长度),空间复杂度O(1)。代码实现展示了Python和Java版本,并总结了哑节点、双指针技巧等关键知识点及易错点。

weixin_45980775的博客 908

LeetCode第二天之《19删除链表倒数第n个节点》

LeetCode19 删除链表倒数第n个节点 题目描述 给定一个链表,删除链表中的倒数第n个节点,并且返回链表的头节点 说明:给定的n保证是有效的 提示:双指针 注意:是倒数第n个节点 进阶:使用一趟遍历扫描实现 示例 给定一个链表:1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后(值为4),链表变为 1->2->3->5. 解题思路 首先既然是链表,那么自然而然的想到一个删除的逻辑就是找到要删除节点的前一个值(记为pre),然后使用

weixin_44184990的博客 294

LeetCode第19题:删除链表的倒数第N个节点

LeetCode第19题:删除链表的倒数第N个节点 题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 解法一:循环了两次,其中first.next=first.next.next;,第一次first=first.next.next;少写了一个next导致删除失败, /** * Definition for singly-linked list. * public c...

new_whiter的博客 387

力扣LeetCode #19 删除链表的倒数第N个节点(RemoveNthFromEnd )

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

weixin_49155948的博客 281

Leetcode——19. 删除链表的倒数第N个节点

19. 删除链表的倒数第N个节点 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3-&g

李霁明的博客 287
上一篇: leetcode-9 回文串
下一篇: ClassNotFoundException: com.mysql.jdbc.Driver
codexjli
博客等级 码龄11年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值