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

【Leetcode_总结】19. 删除链表的倒数第N个节点- python Q: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/d... 阅读详情

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

  • 题号:19
  • 难度:中等
  • 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
输出:[1]

提示:

  • 链表中结点的数目为 sz
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

进阶:

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


实现

第一种:先求链表长度的方法

思路:先求出链表的长度len,再求出要删除结点的位置index = len - n。这样就可以从头结点开始遍历到该位置,删除该结点即可。

C# 语言

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int x) { val = x; }
 * }
 */

public class Solution
{
    public ListNode RemoveNthFromEnd(ListNode head, int n)
    {
        int len = GetLength(head);
        int index = len - n;

        if (index == 0)
        {
            head = head.next;
            return head;
        }
        ListNode temp = head;
        for (int i = 0; i < index - 1; i++)
        {
            temp = temp.next;
        }
        temp.next = temp.next.next;
        return head;
    }

    public int GetLength(ListNode head)
    {
        ListNode temp = head;
        int i = 0;
        while (temp != null)
        {
            i++;
            temp = temp.next;
        }
        return i;
    }
}

Python 语言

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def removeNthFromEnd(self, head, n):
        """
        :type head: ListNode
        :type n: int
        :rtype: ListNode
        """
        index = self.GetLength(head) - n
        if index == 0:
            head = head.next
            return head
        temp = head
        for i in range(index - 1):
            temp = temp.next
        temp.next = temp.next.next
        return head

    def GetLength(self, head):
        temp = head
        i = 0
        while temp != None:
            i += 1
            temp = temp.next
        return i

第二种:利用双指针的方式

思路: 使用两个指针,前面的指针p1先走n步,接着让后面的指针p2与p1同步走,p1走到终点,p2即走到要移除的结点位置。

C# 语言

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int x) { val = x; }
 * }
 */
public class Solution 
{
    public ListNode RemoveNthFromEnd(ListNode head, int n) 
    {
        ListNode p1 = head;
        ListNode p2 = head;
        
        while (n > 0)
        {
            p1 = p1.next;
            n--;
        }

        if (p1 == null) //移除头结点
        {
            return head.next;
        }
            
        while (p1.next != null)
        {
            p1 = p1.next;
            p2 = p2.next;
        }
            
        p2.next = p2.next.next;
        return head;
    }
}

Python 语言

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next

class Solution(object):
    def removeNthFromEnd(self, head, n):
        """
        :type head: ListNode
        :type n: int
        :rtype: ListNode
        """
        p2 = head
        p1 = head
        while (n > 0):
            p1 = p1.next
            n -= 1

        if (p1 is None):  # 移除头结点
            return head.next

        while (p1.next):
            p2 = p2.next
            p1 = p1.next

        p2.next = p2.next.next
        return head
ENVI哨兵一号数据处理 使用ENVI+SarScape处理哨兵数据 阅读详情

相关推荐

从零开始解析N-CMAPSS数据集:航空发动机健康管理的入门指南

本文详细解析了N-CMAPSS数据集在航空发动机健康管理中的应用,从数据集的构成、关键变量到实际数据分析方法,为初学者提供了全面的入门指南。通过Python代码示例,展示了如何加载、探索和建模这一复杂数据集,帮助读者掌握航空发动机性能预测的核心技术。

weixin_29063979的博客 319

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 著作

qq_33373173的博客 250

ICESat-2数据下载及处理分析随笔

ICESat-2全称是Ice,Cloud and land Elevation Satellite -2。看名字我们能知道它的任务是测ice,cloud和land elevation,而且这是一个Satellite,是一颗卫星。那么这里我们就要分清ICESat-2和ATLAS的关系,ICESat-2是星载平台,是一个space observatory,ATLAS是这个星载平台上搭载的单光子激光雷达系统。

u011322358的博客 1万+

Day6: [LeetCode中等] 19. 删除链表的倒数第N个节点

Day6: [LeetCode中等] 19. 删除链表的倒数第N个节点 题源: 来自leetcode题库: https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 思路: 考察链表基本功而已。 代码: dirty code凑合看吧 /** * Definition for singly-linked list. *...

qq2215459786的博客 225

腾讯地图自定义瓦片地图开发实战:从坐标定位到图层融合

本文详细介绍了腾讯地图自定义瓦片地图开发的全流程,从坐标定位到图层融合的实战技巧。通过具体代码示例和常见问题解决方案,帮助开发者快速掌握腾讯地图API的自定义瓦片功能,实现室内外地图的无缝衔接和特殊图层的叠加展示。

weixin_42526015的博客 171

深入解析BLheli电调固件与Dshot通讯协议:从原理到实践

本文深入解析了无人机动力系统的核心——BLheli电调固件与Dshot通讯协议。详细阐述了BLheli固件从经典版到BLheli_32的演进及其功能特性,并重点剖析了Dshot数字协议如何通过数据包和校验码实现更快、更准、更可靠的电机控制。文章还涵盖了双向Dshot遥测、实战配置与调参指南,帮助玩家充分释放无人机性能。

weixin_28273593的博客 434

leetcode题:19. 删除链表的倒数第N个节点(中等)

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

tankpanv的博客 171

【rk3566/3568】Android 11移植gms

【rk3566/3568】Android 11移植gms 1、前言 测试功能时,想去Google play store去下个应用测试,发现通过网页搜索总是下载不到正确的谷歌服务框架;于是就不得不去搞一个内置的gms。 2、移植 1、需要下载Android 11对应的gms的包 opengapps 2、看下文件目录 直接移植core里面的文件,GAPPs Optional按需添加 3、在vendor下创建google目录 ...

lin_ff的博客 7645

力扣:19.删除链表的倒数第N个节点(难度中等)

力扣: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] 提示: 链表中结点的数目为 sz 1 <= sz <= 30 0 <= Node.val &l

weixin_44840573的博客 135

UE5 Metahuman与Blender手动绑定:ARKit面部动画实战对比

面部动画是角色动画领域的核心技术,其核心原理在于通过驱动面部骨骼或混合形状来模拟真实肌肉运动,从而赋予数字角色生命力。这项技术的价值在于极大地提升了虚拟角色的表现力与沉浸感,广泛应用于游戏开发、影视制作、虚拟现实和实时交互应用。在技术实现路径上,开发者常面临工业化集成方案与高度自定义方案的选择。本文聚焦于使用行业标准的ARKit 52个面部混合形状数据,深度对比了虚幻引擎Metahuman的工业化流程与Blender手动绑定方案在视觉保真度、工作流效率、性能开销和扩展性上的差异,为不同项目规模与技术需求的团

weixin_33901926的博客 449

无人船 | 基于ROS的轻量级多无人艇自主导航仿真框架

无人水面艇USV是海上自主无人系统的关键组成部分,在民用、军用领域应用广泛,例如海上救援、水质测量、扫雷反潜等,因此对USV导航算法的研究具有重要意义。为了便于进行USV相关算法的验证与部署,本文介绍的这套基于ROS的多无人艇的自主导航仿真平台,轻量化地实现了建图、规划、控制等多种功能,同时自研框架保证了功能的高度可拓展和可定制

FRIGIDWINTER的博客 8001

LeetCode 12: 剑指 Offer 22. 链表中倒数第k个节点 (简单); 19. 删除链表的倒数第 N 个结点 (中等); 160. 相交链表(简单)

文章目录T10: 剑指 Offer 22. 链表中倒数第k个节点 (简单)网址思路解法 1: 双指针易错点:T11: 19. 删除链表的倒数第 N 个结点 (中等)网址思路解法 1: 双指针易错点:T12: 160. 相交链表(简单)网址思路解法 1: 哈希集合易错点: T10: 剑指 Offer 22. 链表中倒数第k个节点 (简单) 网址 https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof 输入一个链

无知小九的博客 144

RK3588 部署 YOLO26 目标检测:从环境搭建到 NPU 推理

采集图像(500+ 张,覆盖不同光照和角度)→ 筛选(删除模糊、无目标的图像)→ LabelImg 标注(选择 YOLO 格式)→ 划分 train:val:test = 7:2:1labelImg├── train/├── val/nc: 3类别顺序必须与 LabelImg 标注时一致。YOLO26 在 RK3588 上的部署流程是 PC 端训练 → ONNX 导出(opset=11)→ RKNN 转换(INT8 量化)→ 板端推理。

LXY_LOVE36的博客 418

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

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

南 墙 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

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

Leetcode 19. 删除链表的倒数第N个节点1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 基本思路是: 使用双指针,先让一个指针从头结点开始,向右移动 n + 1 步, 然后第二个指针再向右移动,直到第一个指针移动到链表尾部, 此时第二个指针正好指向 要删除节点的前置节点。 这里注意的是 我们使用 n + 1 代替原来的 n ,因为要删除节点 n, 我们必

珍惜 8749

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

weixin_45980775的博客 908

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

fast 先走 n 步,然后 slow、fast 才同时走,则 slow 和 fast 将会一直保持 n 步的差距,那么当 fast 越界时(即 fast == null 时),slow 就处于倒数第 n 个节点。因此,我们想要删除倒数第 n 个节点,则需要找到倒数第 n+1 个节点,按照前面slow、fast指针逻辑,则当fast走到倒数第1个节点时,slow位于倒数第n+1个节点位置。但是本题的链表是单向链表,即当前节点只能通过next找到下一个节点,而无法找到上一个。给你一个链表,删除链表的倒数第。

优快云 1302

【leetcode】力扣算法之删除链表中倒数第n个节点【中等难度】

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]输入:head = [1], n = 1 输出:[]输入:head = [1,2], n = 1 输出:[1]提示解法1:普通解法var removeNthFromEnd = function(head, n) { let len=0; let rootNode=head; while(head){ len++; head=head.next; } if(len

2401_84263403的博客 895

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

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

weixin_47337647的博客 655

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

19. 删除链表的倒数第 N 个结点(力扣LeetCode)

通过使用两个指针来实现的,一个快指针(fast)首先向前移动 n 步,然后快指针和慢指针(slow)一起移动直到快指针到达链表尾部。最后,函数删除了在开始时创建的哑节点(虚拟头节点),并返回链表的新头节点。然后,它通过第一次遍历计算出链表的长度,接着计算出要到达的节点,最后通过第二次遍历找到目标节点的前一个节点。通过修改指针,实现了目标节点的删除,并且在结束前释放了删除节点和哑节点占用的内存。输入:head = [1,2,3,4,5], n = 2。输入:head = [1,2], n = 1。

m0_73841621的博客 872

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

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

jeanlu的博客 709

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

Leetcode19 删除链表的倒数第N个节点 C++,Java,Python

Leetcode19 删除链表的倒数第N个节点 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 博主Github:https://github.com/GDUT-Rp/LeetCode 题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例 1: ...

Rp的博客 269
上一篇: Leetcode 中等:16. 最接近的三数之和
下一篇: Leetcode 中等:43. 字符串相乘
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

青少年编程小助手_Python

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

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

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

打赏作者

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

抵扣说明:

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

余额充值