图解LeetCode——剑指 Offer 22. 链表中倒数第k个节点

news2025/7/16 21:15:24

一、题目

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

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

二、示例

2.1> 示例:

【输入】给定一个链表: 1->2->3->4->5, 和 k = 2.
【输出】返回链表 4->5.

三、解题思路

根据题意,我们可以获得一个单向链表,那么要求根据题目给出的k值来获取倒数第k个节点并返回该节点。那么因为单向链表只能向后遍历,并且对于单向链表我们除非遍历到尾节点,否则也不知道这个单向链表长度是多少。那么,如果要获得倒数第k个节点,就需要我们采用某种可以回退回去的办法,即:回退的方向与遍历的方向相反

那么既然需要回退回去,我们就可以通过递归的方式来对这道题进行解答,即:通过递归的方式遍历链表,当发现某个节点node的next节点为null,则表明已经遍历到了最后一个节点。那么我们就直接return即可。这样,就可以回退到前一个节点了。那么,当满足回退到倒数第k个节点的时候,我们将该节点return返回即可

下面我们以链表1—>2—>3—>4—>5—>6,要找到k=4的节点为例,具体操作过程请见下图所示:

四、代码实现

class Solution {
    int num = 0;
    public ListNode getKthFromEnd(ListNode head, int k) {
        if (head == null) return null;
        ListNode node = getKthFromEnd(head.next, k);
        if (++num == k) return head;
        return node;
    }
}

 

今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/362319.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软件测试】自动化测试该如何做?项目?技术团队?你真的会自动化吗......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 对于自动化测试&…

系统分析师真题2018试卷相关概念二

相联存储的基本特点: 按照内容存取是相联存储的最基本的特点,Cache是一种非常经典的相联存储器。 CISC复杂指令集与RISC指令集的相关概念: CISC复杂指令集: 数量多,使用频率差别大,可变长格式寻址方式&a…

大批量分析下日志处理检索功能

今天我们看一个日志处理分析的问题(jvm操作) 首先说下需求为什么发生: 需求描述: 在我们进行文件分析的时候,如果文件很多,而这个时候我们的线程在分析的时候产生了大量的报错,由于需要定位问题…

推荐5款免费且无广告的软件,助你提升效率

有时候一些小工具,能给你带来一些意想不到的效果,我们来看看下面这5款工具,你又用过其中几款呢? 1.文件大小查看——Folder Size Folder Size是一个可以查看文件大小的软件,使用它可以一键查看文件夹里的文件大小。你…

linux篇【16】:传输层协议

目录 一.再谈端口号 1.端口号定义 2.端口号范围划分 (1)一共有 2^16 个端口 (2)认识知名端口号(Well-Know Port Number) 3.端口号和进程就是K V关系 4.netstat (1)示例1: n 拒绝显示别名…

mysql常用且易混淆函数整理

DATE_FORMAT(date,format) 函数中format的格式如下: 类型转化函数 为了进行数据类型转化,MySQL提供了CAST()函数,它可以把一个值转化为指定的数据类型。类型有:BINARY,CHAR,DATE,TIME,DATETIME,SIGNED,UNSIGNED 示例&a…

【前端】chatGPT教我写compose函数

0 前言 昨天希望实现一个通用的compose函数,能够接受同步函数与异步函数,并且通过异步函数同步执行来是吸纳compose函数中的所有参数函数能顺序执行。 比如compose(asyncFun3,syncFun2,asyncFun1,syncFunc0),四个函数能从右到作顺序执行&…

vue3+webpack5搭建项目

1、运行npm run dev报错: [webpack-cli] Failed to load E:\demoProject\vue3Webpack5\config\webpack.dev.js config [webpack-cli] Error: Cannot find module html-webpack-plugin 解决方案: 尝试了好多解决方案,都不可以。抱着试试的心…

2023年爆火的csgo搬砖项目详细拆解,steam搬砖长期稳定

不懂的同学可以听我下面慢慢道来 我的态度:存在即有意义,没有长久的赚钱项目,但是一定有长久赚钱的人。 我们团队也一直在做这个项目,赚钱是一定的,简单总结:执行力技巧量化。 开门见山 一、steam搬砖项…

Sqoop全部数据导入_将mysql数据库中的数据导入到hdfs中---大数据之Apache Sqoop工作笔记002

然后来看一下如何用sqoop导入数据,这里的导入指的是从其他数据源导入到hdfs,反过来是导出 然后看一下首先准备一下数据 去创建数据库company ,创建表staff, 然后插入数据 插入两行数据测试用 \ 然后查询一下use company 然后查询一下看看结果

整车电源的几种模式:OFF/ACC/RUN/CRANK

本文框架1.前言2. 四种电源模式2.1 OFF模式2.2 ACC模式2.3 ON模式2.4 CRANK模式3. KL15/KL301.前言 在诊断或者网络管理相关模块开发对客户的需求进行梳理时,经常会看到客户对不同车辆模式下处理策略的需求,如果前期没接触过这几种模式,可能…

基于STM32采用CS创世 SD NAND(贴片SD卡)完成FATFS文件系统移植与测试(中篇)

3.2 SPI硬件时序方式 上面的3.1小节是采用SPI模拟时序驱动SD NAND,STM32本身集成有SPI硬件模块,可以直接利用STM32硬件SPI接口读写。 下面贴出底层的适配代码。 上面贴出的驱动代码里,已经将驱动接口部分和协议逻辑部分区分开了,替…

设计模式C++实现20: 桥接模式(Bridge)

部分内容参考大话设计模式第22章;本实验通过C语言实现。 一 基本原理 意图:将抽象部分和实现部分分离,使它们都可以独立变化。 上下文:某些类型由于自身的逻辑,具有两个或多个维度的变化。如何应对“多维度的变化”…

掌握MySQL分库分表(六)解决主键重复问题--Snowflake雪花算法

文章目录问题及需求常用ID解决方案数据库自增IDUUIDRedis发号器Snowflake雪花算法分布式 ID 生成算法Snowflake原理关于bit与byte雪花算法的位数Snowflake必须注意的地方全局唯⼀、不能重复保证各个系统时间一致Snowflake雪花算法实现雪花算法测试结果问题及需求 单库下⼀般使…

模块Model

定义 包含一系列数据,函数,类的文件,通常以.py结尾 作用 让相关的数据,函数,类有逻辑的组织 第一种调用方法直接通过import导入模块名 首先创建模块module01.py import timedef print_nowtime():"""…

sqlserver复制远程数据库到本地

文章目录前言一、前置知识在微软的SQL Server 2000 数据库有三种类型的文件:主要数据文件:(扩展名.mdf是 primary data file 的缩写)次要数据文件(扩展名.ndf是Secondary data files的缩写)事务日志 &#…

【数据结构】——树和二叉树的概念

目录 1.树概念及结构 1.1树的概念 1.2 树的相关性质 1.3 树的表示 1.4 树在实际中的运用(表示文件系统的目录树结构) 2.二叉树概念及结构 2.1二叉树概念 2.2 特殊的二叉树 2.3 二叉树的性质 1.树概念及结构 1.1树的概念 树是一种非线性的数据结构…

Retrofit+Hilt后端请求小项目2--依赖与准备工作

目录依赖处理settings.gradlebuild.gradle(project:app)build.gradle(module:app)准备工作接口安装 JSON 转 kotlin 插件获取 JSON依赖处理 settings.gradle 首先在此指定使用 hilt 依赖时的版本 pluginManagement {repositories {gradlePluginPortal()google()mavenCentral…

服务稳定性保障手段与规范

服务的稳定性,对于任何一个在线提供服务给用户的公司来说,都是非常重要的。任何一次线上事故,都可能会给公司带来显而易见的损失。因为相比于其他部门,负责基础技术、公共服务的同学,发生事故的时候很容易暴露在风口浪…

Kaldi语音识别技术(七) ----- 训练GMM

Kaldi语音识别技术(七) ----- GMM 文章目录Kaldi语音识别技术(七) ----- GMM训练GMMtrain_mono.sh 用于训练GMM训练GMM—生成文件训练GMM—final模型查看训练GMM—final.occs查看训练GMM—对齐信息查看训练GMM—fsts.*.gz查看训练GMM—tree决策树查看align_si.sh 用于对齐训练G…