python 链表中倒数第k个节点

链表中倒数第 k 个节点(双遍历、快慢指针) 链表中倒数第 k 个节点 题目描述: 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 解题思路: 在开始讲解题思路之前,我们先来回顾一下链表,因为作者数据结构是大二学的,有点忘了哈哈哈! 链表 阅读详情

| 返回链表中倒数第K个节点

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。

例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。

示例:

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

返回链表 4->5.

|题解

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

class Solution:
    """
    提供三种解题思路:
    解题思路一: 
    1.先翻转整个链表
    2.遍历翻转后的链表,用count来记录位置, 然后用头插法继续翻转即可
    解题思路二:
    1.找规律可得,倒数第k个元素就是正数n-k+1个元素
    2.先遍历计算链表的长度,再遍历到第n-k+1的位置即可
    解题思路三:
    1.快慢指针解法,先让fast指针走k步
    2.当fast指针走k步后,fast指针和slow指针同步向后走,fast为None,slow就是倒数第k个位置
    """
    def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
        # 解法一
        cur = head
        # 反转初始链表
        new_head = self.reserves(cur)

        new_head2 = None
        count = 0
        while new_head:
            if count == k:
                break
            else:
                # 用头插法反转部分链表
                pre = new_head.next
                new_head.next = new_head2
                new_head2 = new_head
                new_head = pre
            count += 1

        return new_head2
        
    def reserves(self, head):
        new_head = None
        cur = head
        while cur:
            per = cur.next
            cur.next = new_head
            new_head = cur
            cur = per
        return new_head

        # 解法二

        # 定义头指针,添加虚拟头节点
        new_head = None
        node = ListNode()
        new_head = node
        tail = node

        # 计算链表的长度
        count = 0
        cur = head
        while cur:
            count += 1
            cur = cur.next
        
        # s 为正向链表的位置
        s = count - k + 1

        count_1 = 0
        while head:
            if count_1 == s:
                break
            else:
                tail.next = head
                head = head.next
            count_1 += 1

        return new_head.next

		 #解法三
        fast = head
        slow = head
        count = 0

        cur = head
        while fast:
            if count >= k:
                slow = slow.next

            fast = fast.next
            count += 1

        return slow
Python 找出单向链表中倒数第k个节点 实现一个算法,找出单向链表中倒数第k个节点 class Node(): def __init__(self,val): self.val = val self.next = None class LinkList: def __init__(self): self.head = Node(Node) def init(self... 阅读详情

相关推荐

基于CNN网络的轴承故障诊断

内容参考:《基于卷积神经网络的轴承故障 诊断算法研究》–张伟 代码参考: https://github.com/AaronCosmos/wdcnn_bearning_fault_diagnosis 1 背景: 基于信号处理的特征提取+分类器的传统智能诊断算法,对专家经验要求高,设计耗时且不能保证通用性,已经不能满足机械大数据的要求。提出使用基于卷积神经网络智能诊断算法来自动完成特征提取以及故障识别。 1.1 挑战 机电产品故障诊断面临的挑战,有三大特点: (1)数据量大,专业分析人员的数量严重不足,仅依靠人

weixin_45679938的博客 7万+

剑指offer_面试题22 : 链表中倒数第k个节点( python实现 )

链表中倒数第k个节点( python实现 ) 一、题目描述 题目:链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第一个节点。例如,一个链表有6个节点,从头节点开始,他们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 二、解题思路   暂略。(此处主要作为书中python实现补充) 三、代...

UCASer 726

顶级的FDE需要拥有哪些技能?

上一篇《》说明白了什么是FDE。这一篇回答下一个问题:要成为顶级 FDE,需要哪些具体的技能?要想弄清楚FDE应该有哪些能力,就得先搞清楚FDE要完成哪些工作。同时,有一点是我们要密切关注的:现在是大模型时代,所以我们不能脱离大模型讨论FDE的能力。我们可以把FDE在客户现场需要完成的工作分为四类:破冰与诊断、价值交付、项目与预期管理、沟通与影响。另有两项元能力贯穿始终。以下按工作类别逐一拆解,每项能力配 1 / 3 / 5 分标准,方便对照自评。文末有完整打分工具链接。

mydeman的学习日志 260

链表中倒数第k个节点--python

#思路1:遍历两次链表:倒数的第k个相当于正数的n-k+1个节点,可以先遍历链表获得长度n,之后在重新遍历链表找到倒数的第k个节点。--需要遍历两次链表 #思路2:遍历一次链表:两个指针,第一个先走k-1步,之后第二个指针开始从头走,当第一个指针走到链表末尾的时候,第二个指针指向的地方就是倒数第k个节点 class ListNode(object): def __init__(self,...

weixin_45947707的博客 235

西门子S7通信协议TSAP配置全攻略:从默认值到自定义修改(附各型号对照表)

本文深入解析西门子S7通信协议中TSAP配置的核心原理与实战方法。针对S7-200/300/400/1200/1500等主流PLC型号,提供了默认TSAP对照表,并详细阐述了如何根据机架号和插槽号计算或自定义Remote TSAP。文章结合常见连接失败案例,给出了系统化的排错流程,旨在帮助工程师快速打通S7通信链路,提升工业自动化现场调试效率。

weixin_29163797的博客 278

从零到一:NI USB-8506 LIN通讯的驱动安装与硬件调试全攻略

本文详细介绍了NI USB-8506 LIN通讯设备的驱动安装与硬件调试全流程,包括硬件准备、驱动下载与配置、NI MAX设置及常见问题解决方案。通过实战应用与性能优化技巧,帮助用户快速掌握LIN通讯技术,适用于车载数据记录和自动化测试等场景。

weixin_28273593的博客 924

LeetCode:求链表中倒数第k个节点(Python)

题目描述: 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 解题思路: **解法一:**先遍历统计链表长度,记为 n ; 设置一个指针走 (n-k)步,即可找到链表倒数第 k 个节点。 解法一代码: if __name__=='__main__': Linklist=list(map(int,input().st

weixin_43300894的博客 357

Arduino智能小灯DIY:人体感应+光线感应+蓝牙控制全攻略(附完整代码)

本文提供了一份完整的Arduino智能小灯DIY制作指南。项目融合了人体感应、光线感应与蓝牙控制三大功能,通过详细的硬件清单、电路连接图、核心逻辑讲解及附带的完整代码,手把手教你打造一个能自动感知环境与人、并支持手机远程控制的智能照明装置,是入门智能家居和物联网开发的绝佳实践。

java5的博客 1094

python 链表中倒数第K个节点

题目描述: 输入一个链表,输出该链表中倒数第k个结点。 相关题目:求链表的中间节点。 思路: 看到本题我们很自然的一个想法是从尾结点往前倒退k步,但是对于单链表是行不通的。那我们换个思路,假设链表有n个结点,要求倒数第k个结点,其实也就是从前往后数第n-k+1个结点,这个思路只需要遍历两次链表即可。 注意3个问题: 输入的链表头指针为None,此时查找倒数第K个节点自然返回None 如果输入的K...

Iris_6713的博客 389

假期搞定!2026国社科申报AI全攻略指南:从选题到创新,7大核心要点手把手教你!

最后给大家推荐的400多所高校教师都在用的AI平台——高级学术版专业应用平台,集成了国际主流学术应用,以及ChatGPT、Claude、Gemini、Grok等Al大模型的高级版本平台,还有,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。你的任务是:用高度凝练的方式说明在(某一明确国家战略 / 政策方向,如:中国式现代化、共同富裕、基层治理现代化、数字中国、文化强国、国家安全等)背景下,我究竟要研究一个什么“具体而可操作的问题”。

智能AI让学术科研更容易 624

海康visionmaster开发笔记10-集成HALCON第三方算子到VM工具箱的方法

海康visionmaster开发笔记10-HALCON第三方算子到VM工具箱的方法

视觉人机器视觉的博客 4347

python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点

题目实现一个函数,一个可以删除单链表中倒数第k个节点难度简单分析本题比较简单,实现方法多种多样,这里提供一种方法首先明确一点,在单链表中删除倒数第k个节点,需要找到他的前一个节点,让前一个节点指向后一个节点即可。如果链表为空,或者是k小于1直接返回即可。除此之外从链表头走到尾,没移动一步,就让k的值减1。下面来分析具体的过程:链表1 -> 2 -> 3, k=4 , 链表不存在倒数第四...

weixin_39911007的博客 320

大模型_WIN10使用hyper-v安装Ubuntu24.04虚拟机_配置独立静态IP地址_连接外网_并与内网其他机器互通_通过容器安装Dify_超详细安装过程002--人工智能工作笔记0247

本文详细描述了在Hyper-V环境中配置网络、安装Ubuntu虚拟机、设置IP地址、安装Docker以及部署Dify应用的过程。首先,通过Hyper-V管理器创建外部虚拟交换机(ExternalSwitch),并配置本机、虚拟交换机和Ubuntu虚拟机的IP地址,确保网络互通。接着,在Ubuntu虚拟机中安装Open-VM-Tools和Docker,并配置Docker的国内镜像源。最后,通过Git克隆Dify源码,使用Docker Compose启动Dify应用,完成部署。整个过程涵盖了网络配置、虚拟机管理

添柴程序猿的专栏 1751

python 链表倒数第k个节点_找出链表中倒数第K个节点

今天来看一道有意思的链表算法题目。给到一个单向链表,要求找出该链表中倒数第 k 个节点,要求只能遍历一次链表,且空间复杂度为 O(1)。思路1:如果能从链表尾部开始遍历,那只需倒序遍历 k 个节点即是要找出的节点,但是由于是单链表,只能从头结点开始遍历。思路2:先遍历一遍该单链表,获取链表的总节点数 n,那么第 n-k+1 这个节点就是倒数第 k 个节点。所以第二次再遍历到第 n-k+1 这个节点...

weixin_39759881的博客 373

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Statistics and Machine Learning Toolbox

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

python代码找到链表的倒数第K个节点并打印

''' 输入一个链表,输出该链表中倒数第k个结点。 ''' ''' 这道题的思路很好 如果在只希望一次遍历的情况下, 寻找倒数第k个结点, 可以设置两个指针 第一个指针先往前走k-1步, 然后从第k步开始第二个指针指向头结点 然后两个指针一起遍历 当地一个指针指向尾节点的时候, 第二个指针正好指向倒数第k个结点 推广: 寻找中间节点, 两个指针一起, 第一个指针每次走两步, 第二个指针每次走一步, 快指针指到尾部, 慢指针正好指到中间 ''' # -*- coding:utf-8 ...

data+scenario+science+insight 528

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

链表倒数第k个节点 python_python算法-011找出单链表的倒数第k的元素

孤独的船只,扬起的帆,迷途的人,要去哪儿啊?我敬杯酒,妄想孤单,回家吧~——林晨阳《船》题目:给定一个单链表,找出其倒数第k个元素。例如:head->1->3->4->6->7->0->2->4->5->8->3->1,k=3,则倒数第三个元素为8。今天的题目相比昨天的很简单,但是也有一定的技巧。先来分析下题目:给定的是单链表...

weixin_39732249的博客 283

怀旧版电脑GBC模拟器

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

链表倒数第k个节点 python_python实现单链表中删除倒数第K个节点的方法

本文实例为大家分享了python实现单链表中删除倒数第K个节点的具体代码,供大家参考,具体内容如下题目:给定一个链表,删除其中倒数第k个节点。代码:class LinkedListAlgorithms(object):def __init__(self):passdef rm_last_kth_node(self, k, linked_list): # 删除倒数第 K 个节点,针对单链表的if l...

weixin_39525313的博客 150

python删除链表的倒数第k个节点,Python链表中倒数第k个结点

代码的鲁棒性。需要注意:如果输入的链表为空;k大于链表的长度;k为0的情况。对于正常情况,设置两个指针分别指向头结点,第一个指针向前走k-1步,走到正数第k个结点,同时保持第二个指针不动,然后第一个指针和第二个指针每次同时前移一步,这样第一个指针指向尾结点的时候,第二个指针指向倒数第k个结点。判断尾结点的条件是 pNode.next == None。''输入一个链表,输出该链表中倒数第k个结点。'...

weixin_36149595的博客 310

剑指offer 链表中的倒数第K个节点 Python and C++

文章目录题目描述思路做题可能出现的问题pythonC++ 题目描述 输入一个链表,输出该链表中倒数第k个结点。 思路 假设链表中的节点数大于等于k个,那么一定会存在倒数第k个节点,首先使用一个快指针先往前走k步,然后两个指针每次走一步,两个指针之间始终有k的距离,当快指针走到末尾时,慢指针所在的位置就是倒数第k个节点。 做题可能出现的问题 考虑k小于0的情况,其次就是链表的长度是否够k个长度 py...

GhostintheCode的博客 267

求单向链表的倒数第k个节点 python

使用python实现求单向链表的倒数第k个节点

chook_you_too_b的博客 400

python 链表倒数第k个节点_链表中倒数第k个结点

119推荐Python 设置两个指针,查看全部编辑于 2019-08-13 14:41:34回复(23)450publicListNodeFindKthToTail(ListNodehead,intk){ListNodep,q;for(p=q=head;p!=null;p=p.next,k--)if(k<=0)q=q.next;return...

weixin_30847063的博客 193

python链表中删除一个节点数据_python实现单链表中删除倒数第K个节点的方法

本文实例为大家分享了python实现单链表中删除倒数第K个节点的具体代码,供大家参考,具体内容如下题目:给定一个链表,删除其中倒数第k个节点。代码:class LinkedListAlgorithms(object):def __init__(self):passdef rm_last_kth_node(self, k, linked_list): # 删除倒数第 K 个节点,针对单链表的if l...

weixin_39720807的博客 333

python 链表倒数第k个节点_算法篇:链表之倒数第k个节点

算法:该类型的题目,核心点在于如何找到倒数第k个节点的位置,典型的操作办法是,双指针的方法。第一个指针先偏移k个位置,第二个指针才开始执行然后两个指针同时往后移动,第一个指针到链表尾部,第一个指针就是倒数第k个位置题目 1 :链表中倒数第k个节点https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian...

weixin_34096885的博客 201

python 链表倒数第k个节点_leetcode链表之找出倒数第k个节点

序本文主要记录一下leetcode链表之找出倒数第k个节点题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 ​示例:​给定一个链表: 1->2->3->4->5, 和 k = 2.​返回...

weixin_39731623的博客 141

python 链表倒数第k个节点_leetCode160|链表中倒数第k个节点

一,链表中倒数第k个节点1,问题简述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。2,示例描述示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4-&...

weixin_39626409的博客 114

python删除链表的倒数第k个节点,剑指offer 链表中的倒数第K个节点 Python and C++

题目描述输入一个链表,输出该链表中倒数第k个结点。思路假设链表中的节点数大于等于k个,那么一定会存在倒数第k个节点,首先使用一个快指针先往前走k步,然后两个指针每次走一步,两个指针之间始终有k的距离,当快指针走到末尾时,慢指针所在的位置就是倒数第k个节点。做题可能出现的问题考虑k小于0的情况,其次就是链表的长度是否够k个长度python# -*- coding:utf-8 -*-# class L...

weixin_39760967的博客 163
上一篇: python 奇偶链表
下一篇: python 删除链表中倒数第N个节点
评论
成就一亿技术人!
拼手气红包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、付费专栏及课程。

余额充值