14.链表中倒数第K个结点-剑指offer-Python2.7

华为手撕代码+剑指offer总结 (python+c语言) 文章目录1.华为手撕代码总结1.1排序问题1.2链表求和1.3树的前中后序遍历(递归/循环写法)1.4树的链表化1.5给一个初始饮料瓶数,三个空瓶换一瓶,可以赊一瓶,求最后能喝几瓶1.6岛屿最大面积问题1.7自己面试手撕的5道算法题2.剑指offer2.1 二维数组查找中的查找2.2 替换空格2.3 从尾到头打印链表2.4 重建二叉树2.5用两个栈实现队列2.6旋转数组的最小数2.7斐波那契数列 ... 阅读详情

剑指offer第14题 牛客网在线编程链接 https://www.nowcoder.com/activity/oj
链表中倒数第K个结点

题目描述
输入一个链表,输出该链表中倒数第k个结点。

思路1
要想找到倒数第k个结点,我们可以先求出链表的总长度,然后就可以找到倒数第k个结点在链表中的位置,之后再遍历一遍链表,直到遍历到要求结点的位置时终止遍历。注意:输入的链表可能为空;k可能大于链表的长度;k可能为0,这些情况我们都返回空。

Python2.7编写

# -*- coding:utf-8 -*-
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def FindKthToTail(self, head, k):
        #如果链表为空或者要得到的是倒数第0个结点,则返回空
        if not head or k == 0:
            return
        p = head #用于求链表长度
        q = head #用于找到倒数第k个结点
        cnt = 0 #记录数组长度
        while p:
            cnt += 1
            p = p.next
        #如果要得到的节点编号大于链表总长度,则返回空
        if k > cnt: 
            return
        #倒数第k个结点的在链表中的位置
        target = cnt - k + 1 
        cnt_n = 0 #用于记录走过链表的长度
        #当走到要求结点的前一个节点时,停止。此时q指向的结点即为要求的结点。
        while target - 1 != cnt_n:
            q = q.next
            cnt_n += 1
        return q

思路2
第一种思路需要遍历链表2次,耗时较多。第二种思路可以只遍历一遍链表找出倒数第k个结点。
设置两个指针p,q分别指向头结点,第一个指针p向前走k-1步,此时指针p指向正数第k个结点,在这个过程中保持第二个指针不动。接下来让指针p和q同时移动,每次移一步,这样当指针p指向尾结点的时候,指针q指向倒数第k个结点。同样需要注意:输入的链表可能为空;k可能大于链表的长度;k可能为0,这些情况我们都返回空。

# -*- coding:utf-8 -*-
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def FindKthToTail(self, head, k):
        #确保鲁棒性:链表为空以及k为0时的情况
        if not head or k == 0:
            return None
        
        p = head
        q = head
        #当for循环终止的时候,指针p指向正数第k个结点
        #此时如果k的值大于链表的长度,则p.next为None,则直接返回None
        for i in range(k - 1):
            if p.next != None:
                p = p.next
            else:
                return None
        #指针p和指针q同时移动,当指针p到达尾结点的时候,指针q指向倒数第k个结点
        while p.next != None:
            p = p.next
            q = q.next
        return q

写在后面
第二种思路参考:https://blog.youkuaiyun.com/sqiu_11/article/details/77657840

Python版剑指Offer题解 Python版剑指Offer题解 本题解配合leetcode中剑指Offer刷题使用 参考链接:图解算法数据结构 文章目录剑指 Offer 03. 数组中重复的数字剑指 Offer 04. 二维数组中的查找剑指 Offer 05. 替换空格剑指 Offer 06. 从尾到头打印链表剑指 Offer 07. 重建二叉树剑指 Offer 09. 用两个栈实现队列剑指 Offer 10- I. 斐波那契数列剑指 Offer 10- II. 青蛙跳台阶问题剑指 Offer 11. 旋转数组的最小数字剑指 Offe 阅读详情

相关推荐

三、使用HM进行简单的视频隐写demo

三、使用HM进行简单的视频隐写前言一、实验环境二、实验思路三、实验过程3.1 提取原始载体3.2 使用LSB隐写算法进行隐写3.3 放回含密载体3.4 提取含密载体3.5 使用LSB提取算法进行比对四、碰到的问题以及解决思路4.1 块的结构体发生变化4.1.1 产生的原因4.1.2 解决方法4.2 一个有趣的现象4.2.1 产生的原因4.3 视频产生较大失真4.3.1 产生的原因4.3.2 解决方法五、总结 前言 在前两篇博客中介绍了基于HEVC/H.265视频编解码器的视频隐写的基本思路,本文将详细记录

杨酬勤的博客 1792

剑指offer系列-面试题22-链表中倒数第k个节点(python)

文章目录1.题目2.分析题意3.解题思路3.1 常规思路3.2 更优思路4.总结5.参考文献 1.题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第一个节点。例如,一个链表有6个节点,从头节点开始,他们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。链表的定义如下: struct ListNode { int...

besmarterbestronger的博客 778

Halcon dyn_threshold详解

dyn_threshold 原型 dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : ) 功能 利用局部阈值分割图像 参数列表 OrigImage (input_object):原始图像 ThresholdImage (input_object):处理后图像(一般采用滤波处理) RegionDynThresh (output_object):分割后区域 Offset (input_control):灰

ZiLiangQin的博客 1万+

剑指offer之链表中倒数第k个结点(Python)

输入一个链表,输出该链表中倒数第k个结点。

明柳梦少的博客 490

Vivado SDK中LWIP库版本冲突与RTL8211FDI兼容性实战解析

本文深入解析Vivado 2019.1 SDK中LWIP 1.0库与RTL8211FDI千兆PHY芯片的版本冲突问题,并提供实战解决方案。通过手动移植高版本LWIP库、整合第三方驱动及优化BSP配置,有效解决了以太网通信兼容性问题,确保千兆性能稳定运行。

ios99的博客 273

Android开发者必看:火山引擎API验签实战,5分钟搞定年龄变化接口调用

本文为Android开发者提供火山引擎API验签实战指南,重点解析HMAC-SHA256签名算法实现,并以年龄变化接口为例展示完整调用流程。通过OkHttp封装和性能优化建议,帮助开发者5分钟内快速集成火山引擎人像处理功能,解决API调用中的签名验证、参数编码等核心问题。

weixin_30342209的博客 317

链表中倒数第k个结点(python)

题目描述 输入一个链表,输出该链表中倒数第k个结点 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def FindKthToTail(...

weixin_30381793的博客 330

基于Pixhawk与OpenMV的无人机视觉引导精准降落系统设计与实现

本文详细介绍了基于Pixhawk飞控与OpenMV视觉模块的无人机精准降落系统设计与实现。系统通过OpenMV识别Apriltag标签,结合MAVLink通信将视觉数据发送给Pixhawk,实现厘米级精准降落。文章涵盖硬件连接、软件配置、核心代码逻辑解析及实战调试技巧,为无人机自动充电、物流配送等场景提供可靠解决方案。

weixin_29189377的博客 320

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

题目:输入一个链表,输出该链表中倒数第k个节点。 def find_Kth_tail(head,k): if not head or k<1: return None p = head q = head cnt = 0 while p: cnt+=1 p=p.n...

weixin_30375427的博客 184

小程序选项卡以及swiper套用(跨页面)

选项卡tab和swpier之间的套用 其实我之前写过一篇选项卡的切换demo,大家阔以参考一下 小程序多个选项卡切换 那今天写这个demo呢,是因为项目需求,所以仅供参考。 我是拿到了home.wxml的数组下标, 通过url传参的方式去将这个id传到下一个页面, 下一个页面接收以后再将id赋值给对应的tabI或者currentId(swiper 的下标) 实现上一个页面进来以后直接进入对应的页...

Rechal_Mei的博客 3597

ROM和RAM在单片机程序运行理解

ROM和RAM是电子设备中两种核心存储组件,主要区别在于:ROM用于长期存储系统程序、用户文件等固定数据,断电后数据不丢失,但写入速度较慢;RAM则用于临时存储运行中的程序和数据,读写速度快但断电后数据会清空。在单片机中,ROM存储程序代码和常量,RAM存储运行时的变量和数据。两者协同工作,ROM如同"永久档案库"保存必要信息,RAM则像"临时工作台"支持高速运算,共同确保设备正常运行。

qq_37999850的博客 1620

剑指Offer-Python-链表中倒数第k个结点

题目:链表中倒数第k个结点 输入一个链表,输出该链表中倒数第k个结点。 思路1:一次遍历该链表,将结点一次存入列表res中,最后返回res[-k]。这里需要注意的是k的值是否符合题目要求,如果小于等于0或大于res长度则返回None。时间空间复杂度为O(n)。 代码: # -*- coding:utf-8 -*- # class ListNode: # def __init...

神不烦 821

撸毛笔记-电信营业厅 v5.03

电信营业厅 v5.03签到和完成部分金豆任务, 喂宠物7天,15天,28天连签抽奖, 宠物等级权益兑换自己设置电信的服务密码, 把 手机号#服务密码 填到变量里:每天运行一两次const $ = new Env("电信营业厅");

xiaoshun007的专栏 4497

《剑指offer》详解-Python

问题3:二维数组中的查找 Q: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 A1:遍历整个二维数组,O(n2)O(n^2)O(n2) A2: 从左上或者右下开始查找。从右上开始查找:如果数组中的数比这个整数大,向左移动一位,如果数组中的数比这个数小,...

林夕 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【刷题】2021最新剑指Offer汇总

新手村 关卡1-1 洛谷的第一个任务 超级玛丽游戏(洛谷-P1000):点击这里 A+B Problem(洛谷-P1001):点击这里

瑞新の博客:bennyrhys 6299

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

剑指offer 14、链表中的倒数第k个节点 python c++

题目描述: 输入一个链表,输出该链表中倒数第k个结点。 翻车思路:把链表倒序,然后找到底k个节点,返回即可。 为啥会翻车:我以为是返回倒是第k个节点,输出它的值。结果这题目要输出的是原来链表的倒数第k个及以后的节点。 举个例子,用例:{1,2,3,4,5},3,意思是返回倒数第三个节点对应输出应该为: {3,4,5},而不是{3} 就当复习一遍链表倒序吧。 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): #

雾隐雾现的至渝博客 2万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

剑指offer(第二版) Python3实现

剑指offer Python题解 03.数组中重复的数字 04.二维数组中的查找 05.替换空格 06.从尾到头打印链表 07.重建二叉树 08.二叉树的下一个节点 09.用两个栈实现队列 10.斐波那契数列 11.旋转数组中的最小数字 12.矩阵中的路径 13.机器人的运动范围 14.剪绳子 15.二进制中 1 的个数 16.数值的整数次方 17.打印从1到最大的n位数 18.删除列表中重复的...

算法探索之路 7375

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

剑指Offer_编程题——链表中倒数第k个结点题目描述:输入一个链表,输出该链表的倒数第k个结点。具体要求:时间限制: C/C++ 1秒,其他语言2秒空间限制: C/C++32M,其他语言64M具体思路:思路一: 我们需要遍历出链表的长度,然后遍历出我们需要的倒数第k个结点,这是我们常规的想法,当然也考虑了代码的鲁棒性和空指针,k为0,k应该大于链表的长度。1、首先我们用Java实现该思路:pu...

weixin_39983427的博客 267

剑指offer_14链表中倒数第k个结点(链表)

014链表中倒数第k个结点(链表)题目描述解题思路C++代码实现python代码实现 题目描述 输入一个链表,输出该链表中倒数第k个结点。 解题思路 一个链表有6个节点,从头节点开始,它们的值一次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 1、因为是单向链表,所以无法从后向前遍历; 2、一种直观的思路是先遍历链表得到链表的长度,然后第二次遍历就能找到第k个节点,但是需要进行...

weixin_43654857的博客 149

剑指offer:链表中倒数第k个结点

问题描述 输入一个链表,输出该链表中倒数第k个结点。 解题思路 两个指针都指向头结点,第一个指针先移动k-1个结点,之后两指针同时移动,当第一个指针到链表尾的时候,第二个指针刚好指向倒数第k个结点。 c++代码 1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ...

weixin_30247159的博客 76

剑指offer_第14题_链表中倒数第k个结点_Python

题目描述 输入一个链表,输出该链表中倒数第k个结点。 理解 链表详解 python数据结构之链表 解题思路 思路1 确定链表种结点个数lenth 倒数第k个结点就是第length-k+1个结点 需要考虑代码鲁棒性 链表是否为空—头结点不存在 k&lt;=0 链表长度小于k class Solution: def FindKthToTail(self, head,...

Datawhale 772

牛客网剑指offer(Python版)

目录 第一题:二维数组中的查找 第二题:替换空格 第三题:从头到尾打印链表 第四题:重建二叉树 第五题:用两个栈来实现一个队列 第六题:旋转数组的最小数字 第七题:斐波那契数列 第一题:二维数组中的查找 解题思路:从左下角元素往上查找,右边元素是比这个元素大,上边是的元素比这个元素小。于是,target比这个元素小就往上找,比这个元素大就往右找。如果出了边界,则说明二...

hitzijiyingcai的博客 1万+

剑指offer(Python版本)--精心整理

剑指offer(Python版本)1.二维数组的查找2.替换空格3.从头到尾打印链表4.重建二叉树5.用两个栈实现队列6.旋转数组的最小数字7.菲波那切数列8.跳台阶9.变态跳台阶10.矩形覆盖11.二进制中1的个数12.数值的整数次方13.调整数组中的顺序使奇数位于偶数之前14.链表中倒数第K个结点15.反转链表16.合并两个排序的链表17.树的子结构18.二叉树的镜像19.顺时针打印矩阵20.包含min函数的栈21.栈的压入、弹出序列22.从上往下打印二叉树23.二叉搜索树的后序遍历序列24.二叉树中和

每天都要进步的博客 5452

python 链表倒数第k个节点_《剑指offer》14-链表中倒数第k个结点【Java+Python】

链表中倒数第k个结点1. 题目描述输入一个链表,输出该链表中倒数第k个结点。2. 示例无3. 解题思路使用双指针的方法:如果在只希望一次遍历的情况下, 寻找倒数第k个结点, 可以设置两个指针第一个指针先往前走k-1步, 然后从第k步开始第二个指针指向头结点然后两个指针一起遍历当地一个指针指向尾节点的时候, 第二个指针正好指向倒数第k个结点4. Java实现/*public class ListNo...

weixin_30522983的博客 131

剑指offer(python)--题目14-链表中倒数第k个节点

题目描述 输入一个链表,输出该链表中倒数第k个结点。 思路:

王不留行嘿呦嘿 338

剑指offer-链表中倒数第K个结点14

题目描述 输入一个链表,输出该链表中倒数第k个结点。 class Solution: def FindKthToTail(self, head, k): # write code here res=[] length=0 while not head==None: res.a...

weixin_33895516的博客 89
上一篇: 13.调整数组顺序使奇数位于偶数前面-剑指offer-Python2.7
下一篇: 15.反转链表-剑指offer-Python2.7
Qiankun Wang
博客等级 码龄10年 16粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值