python 删除链表中倒数第N个节点

西工大noj100题python2024第一季1-10 【代码】西工大noj100题python2024第一季1-10。 阅读详情

| 删除链表中倒数第N个节点

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

在这里插入图片描述
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:

输入:head = [1], n = 1
输出:[]
示例 3:

输入:head = [1,2], n = 1
输出:[1]

| 题解


# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    """
    解题思路一:
    1.找规律可得,倒数第n个元素为正数第s个元素 s = count - n +1
    2.定义新的头指针,循环遍历添加到新的头指针,当start == n 时,跳过
    3.返回新的头指针
    解题思路二:
    1.定义快慢指针 让fast指针先移动n步,然后fast 和 slow 同时后移 直道fast.next 为空
    2.如果connt == n 即要删除的元素为第一个元素,可作为特殊情况处理
    """
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        # 解题思路一
        cur = head

        # 计算链表的长度
        count = 0
        while cur:
            count += 1
            cur = cur.next
        
        # 倒数第n个元素为正数第s个元素 s = count - n +1
        s = count - n + 1

        # 定义新的指针点并且添加虚拟头节点
        node = ListNode()
        new_head = node
        tail = node

        start = 0
        c = head
        while c:
            start += 1
            if start == s:
                c = c.next
                continue
            else:
                tail.next = c
                tail = c
                c = c.next

        tail.next = None  # 因为tail指针一直指向尾节点,有可能尾节点后面是要删除的节点,索引把尾节点后面的节点断开

        return new_head.next  # 返回新的头指针

        # 解法二
        # 定义快慢指针 让fast指针先移动n步,然后fast 和 slow 同时后移 直道fast.next 为空
        fast = head
        slow = head

        # 定义新的头指针和虚拟头节点
        node = ListNode()
        new_head = node
        tail = node
        
        count = 0
        while fast and slow:
            if count >= n:
                fast = fast.next
                tail.next = slow
                tail = slow
                slow = slow.next
            else:
                fast = fast.next
            count += 1
        # 如果connt == n 即要删除的元素为第一个元素,可作为特殊情况处理
        if count == n:  
            return head.next
        
        # 跳过count == n 的节点
        tail.next = tail.next.next

        # 返回新的头指针
        return new_head.next
SAP MM委外加工保姆级教程:从BOM配置到MIGO发货的完整避坑指南 本文提供SAP MM模块中委外加工的完整操作指南,涵盖从BOM配置到MIGO发货的全流程。详细解析委外采购和工序委外两种模式,包括主数据配置、采购订单创建及物料移动等关键步骤,帮助用户规避常见错误,提升供应链管理效率。特别适合制造业企业实施SAP外包业务参考。 阅读详情

相关推荐

FPGA开发者必看:如何用SATA3.0主机控制器IP实现高速存储扩展(附Xilinx实测数据)

本文为FPGA开发者提供了基于SATA3.0主机控制器IP核的高速存储方案设计与优化指南。通过详细解析IP核架构、Xilinx FPGA平台集成实战及性能优化技巧,帮助开发者实现接近理论极限的540MB/s数据传输速度。文章还包含常见问题解决方案和高级应用场景拓展,是硬件工程师提升存储性能的必备参考。

weixin_30632089的博客 114

动图:删除链表的倒数第 N 个结点

本文主要介绍一道面试中常考链表删除相关的题目,即 leetcode 19. 删除链表的倒数第 N 个结点。采用 双指针 + 动图 的方式进行剖析,供大家参考,希望对大家有所帮组。 19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 解题思路 在链表中要删除某个节点 nodeB,必须先找到 该节点的前一节点 nodeA ,再将 nodeA 指向 nodeB 的下一节点 nodeC ,从而实现节点 n.

657

(入门向)在Ubuntu22.04.3安装Matlab2021b,以及无法安装在当前目录下的解决办法(见最后)

还有这个/usr/local是只读状态,我试过sudo chmod..去改那个文件的读,结果还是安装不了,我不是这个默认路径,因为它文件夹还是只读,于是我在matlab2021b下创了一个bin,并选上。输入完成后,依次按y,因为里面有三个文件,他会让你确定3次密码,直接yyy跳过即可。你可能会遇到装不下的情况,这个软件占30g,可是你分配给虚拟机就剩10g。,于是我去Downloads下建了一个matlab2021b文件夹,果然好使,3).此时,会提示你输入密码,因为这个rar是有密码的,

harrype的博客 7286

[链表]删除链表的倒数第N个节点

数据结构与算法、链表、力扣、删除链表的倒数第N个节点、暴力解法、双指针解法!

weixin_42415173的博客 901

四、ARDUINO UNO开发板介绍

(一)ARDUINO UNO开发板 Arduino生态中包括多种开发板、模块、扩展板。其中UNO R3是最适合入门且功能齐全使用量最多的Arduino开发板。以下就是Arduino UNO R3开发板的图片。 (二)ARDUINO UNO开发板基本构成 Arduino开发板设计得非常简洁,一块AVR单片机、一个晶振或振荡器和一个5V的直流电源。常见的开发板通过一条USB数据线连接计算机。Arduino有各式各样的开发板,其中最通用的是Ardui...

简时刻的博客 7万+

推荐系统[八]算法实践总结V3:重排在快手短视频推荐系统中的应用and手淘信息流多兴趣多目标重排技术

快手推荐系统包括了传统的召回、粗排、精排、Learning To Rank 的多目标排序、多目标预估等技术环节。而在这些模块之后的技术环节就属于重排序,主要包括手机端和服务端两部分。服务端通过传统服务器部署重排服务,包括序列重排、多源内容混排、多样性模块。端上部分包括端上重排模型和端上重排策略两部分。重排技术是快手十分重要的技术环节,它的发展速度远快于其他排序环节,属于较新的技术范畴。整个序列的价值并非单 item 效果的累计,如何使得序列价值最大化;

丨汀、的博客 1063

python---删除链表中倒数第n个节点

""" Definition of ListNode class ListNode(object): def __init__(self, val, next=None): self.val = val self.next = next """ class Solution: """ @param: head: The first node of

hotpotbo的博客 2698

海上风电经柔性直流送出系统的阻抗建模与稳定性分析

摘要 本文针对海上风电经柔性直流送出系统的稳定性问题,提出了一种基于阻抗建模的分析方法。研究建立了直驱永磁同步发电机(PMSG)的序阻抗解析模型和模块化多电平换流器(MMC)的交流侧小信号阻抗模型,通过Matlab/Simulink平台实现了完整的仿真验证系统。采用谐波线性化原理和端口阻抗分析法,揭示了风电机组与柔直换流器之间的阻抗匹配特性对系统稳定性的影响规律。研究结果表明,控制参数设置会显著改变系统阻抗特性,进而影响稳定裕度。文中提出的阻抗建模方法为分析海上风电柔直送出系统的宽频振荡问题提供了有效工具,

huanghm88的专栏 232

19. 删除链表的倒数第 N 个结点 python

1

weixin_42396719的博客 403

【推荐100个unity插件】基于关节物理控制的自行车、电动车、摩托车模拟解决方案——Simple Bicycle Physics

摘要 "简易自行车物理"是Unity的自行车模拟资源包,支持Animation Rigging,实现基于关节物理的自行车控制。兼容所有平台和渲染管线,包含预制体、材质、脚本等资源。核心脚本Bicycle Controller管理自行车物理属性,支持自定义角色设置和移动端控制。安装后,用户可快速配置骑行场景,调整转向、速度、重心等参数,并支持地面贴合、兔跳等功能。适用于开发各类自行车模拟游戏和应用。 (字数:149)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1366

超声波雷达探测车位及信号处理方法

在APA泊车中用到了超声波雷达,第一次接触,总结研究之。

周陽讀書 1229

【力扣算法17】之 19. 删除链表的倒数第 N 个结点 python

这篇文章是关于通过删除链表的倒数第n个节点来实现链表操作的。文章首先给出了问题描述,然后分析了解决该问题的思路和算法。思路主要利用双指针的技巧,在一次遍历中找到要删除的节点的前一个节点,并进行删除操作。具体实现的代码及详细分析也在文章中给出。

全栈若城,专注知识分享 1465

【系统架构设计师-2024下半年真题】案例分析-参考答案及部分详解(完整回忆版)

根据h中描述,为了保证高可靠性,有ping/echo,心跳机制两种策略,从资源利用率问为啥心跳更好。王工觉得使用ping/echo好,但李工觉得从系统资源利用率来说,使用心跳机制好 1、针对质量属性可以使用ping/echo和心跳模式实现,分别简述ping/echo和心跳的实现原理。 2、张工认为心跳策略比较适合,简述为什么?

数据知道的博客 1万+

删除链表的倒数第n个节点 python_LeetCode 删除链表的倒数第 N 个节点

删除链表的倒数第 N 个节点题目来源:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3-&gt...

weixin_30372331的博客 191

Camera2Demo

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

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

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

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

通过一趟扫描实现删除链表的倒数第N个节点。使用双指针技术,一个先行指针领先N+1步,当先行指针到达末尾时,另一个指向待删除节点的前驱,实现高效删除。

10年数据\经营分析经验,现任大厂数据分析负责人 892

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

删除链表的倒数第n个节点 python_【LeetCode&python】19. 删除链表的倒数第N个节点...

题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路如果不要求一遍扫描,可以先遍历一次找到链表长度,再遍历一次,找到倒数第n+1个结点,删除后面...

weixin_39669761的博客 225

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

删除链表的倒数第n个节点 python_58-删除链表的倒数第N个节点-LeetCode19(python)...

题目描述给定一个链表,删除链表的倒数第 n个节点,并且返回链表的头结点。示例给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解决思路一官方题解中的第二种思路。首先使用哑节点,为了简化特殊情况(链表中只有一个节点或需要删除...

weixin_39790102的博客 121

LeetCode: 删除链表的倒数第N个节点 python实现

题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 代码实现 执行用时 :24 ms, 在所有 Python 提交中击败了68...

weixin_43786241的博客 657

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

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

Aries 652

删除链表的倒数第n个节点 python_19. 删除链表的倒数第N个节点(Python)

题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解答方案1:走两趟首先从头到尾遍历链表,统计输入链表的长度list_len;计算要删除的节点位置,...

weixin_35907189的博客 579

LeetCode:删除链表的倒数第N个节点(Python版本)

LeetCode刷题日记删除链表的倒数第N个节点Python代码 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫...

Cassiel_Coder的博客. 458

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

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

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

2503_91125378的博客 301

LeetCode题解(python)-19. 删除链表的倒数第N个节点

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

Marshal Zheng的博客 479

58-删除链表的倒数第N个节点-LeetCode19(python)

题目描述 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 解决思路一 官方题解中的第二种思路。首先使用哑节点,为了简化...

Try_my_best51540的博客 390

删除链表的倒数第n个节点 python_删除链表的倒数第N个节点

题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?之前我们说过 C 和 C++ 中的指针是个好东西 ,在解决这类问题很是方便 。然而 python 是没有这个概念的 ,包括链表也是模拟链...

weixin_39759060的博客 270
上一篇: python 链表中倒数第k个节点
下一篇: python 相交链表
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

一叶知秋的BLOG

创作不易 请多多关注

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

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

打赏作者

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

抵扣说明:

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

余额充值