剑指offer22:链表中倒数第k个节点

剑指offer22:链表中倒数第K个节点 一、题目描述 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 二、解题思路 思路一: 1.统计出链表的长度,记为n 2.设置一个指针,使其先走(n-k)步,即可找到第K个节点 思路二(双指针): 1.设置双指针slow和fast,使其都在head处 2.让fast先走k步 3.让slow和fast同时向后一 阅读详情

1、题目

剑指offer22:链表中倒数第k个节点

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

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

示例:

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

返回链表 4->5.

2、代码

2.1、方案1:暴力破解

先计算链表长度n,再找到链表中n-k+1的位置即可。

class Solution {

    public ListNode getKthFromEnd(ListNode head, int k) {
        if(head == null) return null;

        int n = linkLength(head);

        for(int i=1;i<=n-k;i++){
            head = head.next;

        }

        return head;
    }

    public int linkLength(ListNode head){
        int n=0;
        while (head != null){
            n++;

            head = head.next;

        }
        return n;
    }

}

2.2、方案2:算法优化

为链表添加双指针former和latter。

class Solution {

    public ListNode getKthFromEnd(ListNode head, int k) {
        if(head == null) return null;

        ListNode former = head;
        ListNode latter = head;

        for(int i=1;i<=k;i++){
            former = former.next;
        }

        while (former != null){
            former = former.next;
            latter = latter.next;
        }

        return latter;
    }

}

3、随笔

3.1、测试代码

public static void main(String[] args) {
        ListNode head = new ListNode(1);
        ListNode firstNode =new ListNode(2);
        ListNode secondNode =new ListNode(3);
        ListNode thirdNode =new ListNode(4);
        ListNode fourthNode =new ListNode(5);

        head.next = firstNode;
        firstNode.next = secondNode;
        secondNode.next = thirdNode;
        thirdNode.next = fourthNode;
        fourthNode.next = null;

        
        ListNode link = getKthFromEnd(head,2);

        System.out.println("link.val = " + link.val);
        
    }
系统安装、qt配置、安装pcie驱动 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 安装Linux系统指定:ununtu20.04并配置相关软件环境 前言 提示:这里可以添加本文要记录的大概内容: ununtu20.04、Qt 5.9.0、pcie驱动 提示:以下是本篇文章正文内容,下面案例可供参考 一、安装系统 制作系统盘(win10),在开机时按相应键进入BIOS,(华硕需要先改配置启动->CSM->开启->第一个选项选第一个或第二个),等待即可 进入后按照https://www.sysgeek. 阅读详情

相关推荐

用deepseek对GPU服务器进行压力测试

利用 DeepSeek 模型对 GPU 服务器进行压力测试,核心思路是通过,验证 GPU 服务器在计算、显存、网络等维度的承载能力,同时观察稳定性与性能瓶颈。

weixin_42795092的博客 1610

【剑指offer】面试题22:链表中倒数第 K 个节点

题目: 输入一个链表,输出该链表中倒数第k哥结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1,2,3,4,5,6。这个链表的倒数第3个结点是值为4的结点。  为了得到第K个结点,很自然的想法是先走到链表的尾端,再从尾端回溯K步。可是我们从链表结点的定义可疑看出本题中的链表 是单向链表,单向链表的结点只有从前往...

Java学习 2013

Python爬取京东商品数据保姆级教程(附源码及效果图)

本文介绍了一个基于Python的京东商品数据爬取教程,适合入门级开发者使用。文章详细讲解了从安装依赖库(DrissionPage、pandas等)到完成数据爬取的全过程,包括:1. 模拟用户搜索操作;2. 解析商品标题、价格、销量等关键信息;3. 处理复杂数据格式(如转换万级销量);4. 数据存储与Excel导出。教程提供了完整的封装函数,支持自定义搜索关键词和爬取数量,并包含错误处理和多种元素定位方式。最终数据会按时间戳命名导出为Excel文件,方便用于课程作业或毕业设计。

weixin_46449236的博客 1874

剑指 Offer——22:链表中倒数第k个节点

该题目和以下两个题的解题思路相似: 剑指 Offer——18:删除链表的节点 LeetCode19:删除链表的倒数第N个节点 目录 一、题目 二、示例 三、思想 四、代码 一、题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 二、示例 示例: 给定一个链表: 1->2->3-&g

D77的博客 254

飞书组织架构同步至LDAP:实现企业应用统一身份认证的实战指南

本文详细介绍了如何将飞书组织架构同步至LDAP,实现企业应用统一身份认证的实战方案。通过飞书开放平台API与LDAP服务的集成,企业可以大幅减少账号管理工作量,提升IT效率。文章涵盖技术架构设计、密码策略、详细配置步骤及自动化同步实现,特别适合需要统一认证体系的中大型企业。

weixin_29172201的博客 335

GEOS-Chem笔记——模式下载安装+驱动数据+运行流程

看过我博客的会发现我写了很多CESM的笔记,但是说实话,平时科研我其实更多时候是GEOS-Chemuser。之所以写了很多CESM笔记,其实是因为不会,就边学边写。然后GEOS-Chem已经用比较熟了,所以也没想过做笔记啥的。但是我发现越来越多朋友私信我各种CESM问题,我觉得我可能给大家营造了一种我是CESM达人的错觉。感觉自己有点跑偏了呢。公平起见,我觉得我有必要补充点GEOS-Chem笔记。 GEOS-Chem是研究大气化学的人常用的大气化学传输模式,在全世界范围的大气化学研究组中被广泛使用。不过.

砍柴姑娘Jourosy的博客 1万+

剑指offer | 面试题22:链表中倒数第k个节点

转载本文章请标明作者和出处 本文出自《Darwin的程序空间》 本文题目和部分解题思路来源自《剑指offer》第二版 开始行动,你已经成功一半了,献给正在奋斗的我们 题目 输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4...

程序员大航子 1万+

Abaqus梁模型仿真中的常见陷阱与优化策略

本文深入探讨了Abaqus梁模型仿真中的常见陷阱与优化策略,涵盖几何建模、材料属性设置、边界条件处理等关键环节。针对梁截面方向定义、网格划分、复合截面建模等典型问题,提供了实用的Python脚本示例和优化方案,帮助工程师避免计算错误并提升仿真精度。文章特别强调了动力分析中的网格密度要求和材料非线性考虑,为复杂工程应用提供专业指导。

weixin_29099217的博客 461

剑指Offer 22:链表中倒数第k个节点

剑指offer

qq_64270799的博客 478

YOLOv11改进策略【模型轻量化】| 替换轻量化骨干网络:ShuffleNet V1

本文记录的是基于ShuffleNet V1的YOLOv11轻量化改进方法研究。ShuffleNet利用和操作降低计算成本,克服了现有先进架构在极小网络中因 1×1 卷积计算成本高而效率低的问题。相比一些传统的网络架构,能更好地。本文配置了原论文中和四种模型,以满足不同的需求。

Limiiiing的博客 1228

使用 Simulink 搭建一个地震信号反射系数反演与滤波联合仿真的系统模型

《Simulink地震信号处理仿真指南》摘要:本文详细介绍了使用Simulink进行地震信号反射系数反演与滤波联合仿真的完整流程。从创建模型、生成含噪合成地震记录(包含子波卷积与随机反射系数),到设计滤波模块(带通/小波/自适应滤波)和实现反演算法(Wiener-Hopf方程/RLS方法),最后通过可视化模块分析结果。教程涵盖理论准备、7个实施步骤、优化建议及实际应用场景,为地震勘探、地质调查等领域提供标准化的信号处理仿真方案,特别适合需要掌握地震信号反演与实时滤波技术的工程人员学习。

amy_mhd的博客 114

剑指 Offer 22:链表中倒数第k个节点

链表中倒数第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(object): #

weixin_45850679的博客 164

ArcGIS Pro符号化教程

本文详细介绍了ArcGIS Pro的软件设置和符号化操作步骤。主要包括:1)设置默认工程目录和关闭地图自动加载;2)创建新工程的基本流程;3)点要素的单一符号化方法,包括样式修改和图层调整;4)图表符号显示过滤器的使用,涉及字段添加、图表类型选择和背景设置。文章还提供了操作截图和数据下载链接,适合GIS初学者学习ArcGIS Pro的基础符号化操作。

WwLK123的博客 549

剑指 Offer:22. 链表中倒数第k个节点

文章目录1. 题目2. 描述3. 实现方法3.1 方法 13.1.1 思路3.1.2 实现 1. 题目 剑指 Offer 22. 链表中倒数第k个节点 2. 描述 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4-

村雨遥 394

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

剑指Offer22:链表中倒数第k个节点java实现

剑指 Offer 22. 链表中倒数第k个节点 https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1->2->3-&g.

WukongGo的博客 196

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

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

LC: 剑指 Offer 22. 链表中倒数第 k 个节点

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

qq_41596063的博客 347

visio安装包

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

剑指Offer——面试题22:链表中倒数第K个节点

题目描述 输入一个链表,输出该链表中倒数第k个结点。k从1开始计数。 算法分析 普通思路: 先确定链表的长度 n(需要一次遍历), 再根据 k 算出节点正数的位置,通过再次遍历确定返回的节点。此方法需要两次遍历链表,难以让面试官满意 剑指Offer思路: 设置两个指针,p1 和 p2,它们之间正好有 k 节点,之后 p1 和 p2 向后遍历,直到 p2 指向链表的尾结点,此时 p1 指向链表的...

Suqing_2018的博客 294

剑指offer22:链表中倒数第K个节点

输入一个链表,输出该链表中倒数第k个结点。 该题可以想到有两种思路解答,先分析:题目给的是单链表,单向链表的节点,只有 从前往后的指针而没有从后往前的指针。所以不能从后找到倒数第K个节点 ①假设这个链表有N个节点,那么倒数第K个节点就是从头节点开始的第(n-k+1)个节点 但是这种方法需要遍历链表两次,第一次统计出链表中节点的个数,第二次就能找到 倒数第K个节点。 **但第一种不是最优...

Lchase_chen的博客 220

剑指Offer 系列 剑指 Offer 22:链表中倒数第k个节点

题目描述: 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 分析:可能比较菜,第一思路都是比较笨的方法: 先算出链表的总长度sum 然后链表头节点往后移动sum-k; 代码:

双鱼座boyy的博客 264

[剑指offer][leetcode]面试22:链表中倒数第k个节点

题目 输入一个链表,输出该链表中倒数第k个结点。 分析 类似于链表的中间节点,我们采用快慢指针通过遍历一次链表解决这个问题。我们要找的是倒数第k个节点,倒数第k个节点和最后一个节点距离是k-1。由此,如果快指针和慢指针相距k-1个节点,当快指针到达最后一个节点的时候,慢指针刚好到达倒数第k个节点。所以我们设立两个指针,快指针先走k-1步,然后两个指针同时开始走,当快指针到末尾的时候,慢指针到达...

BRAVE_NO1的专栏 586

剑指Offer22:链表中倒数第k个节点

题目:输入一个链表,输出倒数第k个元素,符合大多数人的习惯,最后一个节点,就表示最后一个。 思路:让第一个节点走k-1步,再让第二个节点开始走,这样第一个节点指向最后一个节点的时候,第二个节点就指向,倒数第k个节点。但是,我这里强调一下写代码的健壮性,就是你的代码得应对一下不可预料的情况,你得对错误或者不符合的情况进行排除。 代码: class ListNode{ i...

weixin_39137699的博客 165

【剑指Offer】第22题:链表倒数第K个节点

目的:记录一下刷题的过程 题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯, 本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点, 从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是 值为4的结点。 首先拿到这道题的第一想法就是遍历,记录一下总共有多少个节点,假设为n个,然后倒数第k个节点就是从头结点开始的第k-n+1个,然后我...

weixin_44717958的博客 124

剑指offer之面试题22:链表中倒数第k个节点

链表中倒数第K个节点 1、题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个节点,该链表是单向链表,不存在指向前的指针。 输入参数:一个指向链表头节点的指针pHead,一个无符号整数k 输出结果:返回倒数第k个节点,或者返回空指针 2、解题 这道题的关键在于快慢指针的使用。 普通思路是遍历两遍链表,第一遍获得节点个数n,然后获得倒数...

乘启飞翔 347

剑指offer 面试题22:查找链表中倒数第k个节点

题目: 输入一个链表,输出该链表中倒数第k个节点 提示 可以用2个下标,第一个节点A先移动k-1个下标,此时2个节点A、B同时向尾节点移动,当A到达尾节点时,B则是该链表的倒数第k个节点 public class FindKTotail { public static class ListNode { ListNode next = null; i...

Qyuewei的专栏 533

剑指offer:面试题22—链表中倒数第k个节点

题目描述 输入一个链表,输出该链表中倒数第k个结点。 解决: 1.二次遍历链表 第一次统计链表的节点个数;第二次找到第n-k+1个节点就是倒数第k个节点。 2.使用两个指针 public ListNode FindKthToTail(ListNode head,int k) { if(head==null || k<=0) return null; ...

123木头人! 279

剑指offer-面试题 22:链表中倒数第K个节点

题目描述: 输入一个链表,输出该链表中倒数第k个结点。 注意: k >= 0; 如果k大于链表长度,则返回 NULL; 样例 输入:链表:1->2->3->4->5 ,k=2 输出:4 解法一:时间复杂度O(n) 先判断 K 的合法性,如果 K==0,则返回NULL。 求出链表的长度。再判断K是否大于链表的长度。如果大于,则返回NULL,否则继...

wchzh2015的博客 262
上一篇: 剑指offer18:删除链表的节点
下一篇: 剑指offer24:反转链表
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值