链表中倒数第k个结点

13-单片机模块化程序: 单片机AT指令配置模块程序模板(非阻塞版) 资料源码:https://gitee.com/yang456/OpenProgrammingModuleForMCU.git 点击加入群聊【单片机,物联网,上位机】: 说明1:知识从未如此性感。 烂程序员关心的是代码,好程序员关心的是数据结构和它们之间的关系! 说明2:学的是思想,而非程序!此代码思路适用于所有的单片机。 说明3:学会以后,下面的代码可能会跟你一辈子! 说明4:这一系列文章是为大幅度裁剪本人博客文章!使博客文章更有条理。便于推其它教程! 拷贝这两个文件到自己的工程 .. 阅读详情

1.题目

在这里插入图片描述

2.解法1(递归法)

public class Solution {
    private int index = 0;
    public ListNode FindKthToTail(ListNode head,int k) {
        // 利用递归
        if (head == null) return null;
        
        ListNode tmp = FindKthToTail(head.next, k);
        // 使用本次循环的点
        if (++index == k) return head;
        return tmp;
    }
}

== 时间复杂度为O(n),空间复杂度为O(n) —这个是用于递归栈的开销==

解法2(双指针法)

public class Solution {
    public ListNode FindKthToTail(ListNode head, int k) {
        if (head == null || k <= 0) return null;
        
        // 让两个指针之间的距离保持k
        ListNode pre = head;
        ListNode move = head;
        for (int i = 1; i < k; i++) {
            // 如果直接出现结果,那就返回
            // 指针要对等
            if (move.next != null) {
                move = move.next;
            } else {
                return null;
            }
        }
        
        while (move.next != null) {
            pre = pre.next;
            move = move.next;
        }
        return pre;
    }
}

== 时间复杂度为O(n),空间复杂度为O(1)==

【超详细】计算机组成原理总结及思维导图 计算机组成 第一章 计算机系统概论 冯诺依曼型计算机特点 1.计算机由运算器,控制器,存储器,输入和输出设备5部分组成 2.采用存储程序的方式,程序和数据放在同一个存储器中,并以二进制表示。 3.指令由操作码和地址码组成 4.指令在存储器中按执行顺序存放,由指令计数器(即程序计数器PC)指明要执行的指令所在的储存单元地址,一般按顺序递增,但可按运算结果或外界条件而改变 5.机器以运... 阅读详情

相关推荐

Docker网络教程(四)macvlan 网络教程

在这种网络下,Docker 宿主机在它的IP之上,允许接受多个 MAC 地址的请求,然后再将这些请求路由至对应的容器里。流通,Docker 会用它的 MAC 地址,把流量路由进你的容器里。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。),Docker使用其MAC地址将流量路由到你的容器。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。你需要 3.9 或者更高版本的 Linux 内核,4.0 以及以上的版本是更好的。如果你的设备叫别的名字,用对应的名字代替。

weixin_42445065的博客 4133

链表的中间结点与链表的倒数第k个结点(精美图示详解哦)

链表的中间结点与链表倒数第k个结点详解,图例包理解哦,确定不进来看看嘛

weixin_73450183的博客 1554

SRAM故障排查实战:如何用Nano Prober定位6T存储单元的异常点

本文详细介绍了在SRAM故障排查中,如何运用Nano Prober(纳米探针)技术精准定位6T存储单元的内部异常。面对传统方法难以发现的电性参数漂移(如晶体管阈值电压偏移)或微小物理缺陷,Nano Prober能直接对单个6T单元内的晶体管进行I-V特性测量,结合失效模式分析,有效解决读写错误等疑难问题,是芯片失效分析的关键工具。

v5w6x的博客 668

查找链表中倒数第k个结点

题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 分析:为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针。因此...

hummingbird0的博客 1249

使用petalinux做嵌入式设计开发(1)

1.创建vivado工程,建立硬件环境,最终导出hdf文件 既可以在windows系统下的vivado上编写硬件工程并导出hdf文件,也可以在linux系统下的vivado中编写硬件工程并导出hdf文件。(对于windows系统下导出的hdf文件还需要传递到linux系统下的文件夹中。) 2.以hdf硬件文件为基础创建,配置,编译,打包petalinux工程,导出linux系统所需镜像文件。 具体步骤: (0)设置环境变量 设置环境变量使得我们可以直接使用petalin...

plotup的博客 2077

共聚焦显微镜的光源、工作原理与选型

共聚焦显微镜作为科研与工业领域中重要的微观成像工具,凭借光源的精准适配性、光学切片技术的三维成像能力,以及对不同工业场景的定制化适配潜力,为半导体检测、工业部件分析、智能制造升级提供了关键技术支撑。深入理解其光源特性、工作原理与选型逻辑,能帮助工程师与技术人员精准匹配设备与生产需求,既保障微观检测的精度与效率,又为产业优化、技术创新筑牢微观观测的基础。

PhotonixBay的博客 1540

返回链表中倒数第K个结点

返回链表中倒数第K个结点 题目 请写一算法,该算法用尽可能高的时间效率找到list所指的线性链表的倒数第K个结点,若找到,返回该结点的信息,如果没有找到,返回NULL(2009年硕士研究生入学考试计算机全国联考题)。 分析 主要思路分三步: 第一步:让指针p指向第K个结点 第二步:再设置指针q指向链表的初始位置,即list所指的位置 第三步:循环,让p,q同时向链表尾部移动,当p移到最后结点时,...

honeylife的博客 928

STM32CubeIDE入坑指南

一 前言 在科技日新月异的今天,作为从事效率为先的苦逼 IT 行业,秉承着我不入地狱谁入地狱的伟大革命精神,我决定再一次做第一个吃螃蟹的人,通过自身的入坑过程,为大家测试STM32CubeIDE这款新式工具。(其实是为了我能省点时间,快点做完项目,多挣点钱买几瓶肾气丸) 二 看一看别人是如何入坑的 二 手把手带你入坑 三 相关资料 ...

CH的博客 1万+

输出一个单向链表,找出倒数第k个结点的值

输出一个单向链表,找出倒数第k个结点的值 输入描述: 1.输入链表结点的个数 2.输入链表的值 3.输入k的值 示例1: 输入: 8 1 2 3 4 5 6 7 8 7 #include &lt;stdio.h&gt; #include&lt;stdlib.h&gt; //第一步定义结构体 typedef struct node{ int data; struct no...

alegria_x的博客 1179

利用ArcGIS的模型构建器实现批量投影栅格和批量克里金插值

博主要批量投影几百个栅格,但是ArcGIS中的投影栅格的批处理工具需要手动一条条设置参数,还是麻烦,因此学习了使用模型构建器(ModelBuilder)来批量投影栅格,可以导入需投影栅格的文件夹,然后迭代投影,并按栅格原名逐个输出到指定目录。 1.在工具箱里构建模型 在arctool box里右键点击空白处,选择【添加工具箱】,点击ArcGIS默认工作目录的工具箱进行添加,然后Toolbox就会被添加到ArcToolbox页面,右键点击Toolbox,选择“新建”-“模型” 2.编写模型 (1).

qq_36958801的博客 1万+

LiveBOS UploadFile.do 任意文件上传漏洞复现(XVE-2023-21708)

LiveBOS UploadFile.do 接口存在任意文件上传漏洞,未经身份验证的攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。

0xSec 2426

求单链表中倒数第k个结点

题目:实现一个算法,找出单链表中倒数第k个结点。 解法:        下面以递归和非递归的方式解决这个问题。一般来说,递归解决更简洁,但是效率比较差。 例如,就这个问题来说,递归解法的代码量大概只有迭代解法的一半,但要占用O(n)空间,其中n为链表结点个数。 注意:         在下面的解法中,k定义如下:传入k=1将返回最后一个结点,k=2返回倒数第二个结点,依此类推。当然,也可

雪儿的专栏 2050

RK3568平台(USB篇)USB Gadget 驱动

USB 设备驱动,按照设备端关联的 USB 控制器 是工作在 主模式 还是 从模式,分为 USB 设备主机侧驱动 (主模式),或者 USB 设备从机侧驱动 (从模式)。同时,工作在 主模式 的 USB 控制器,称为 USB 主机控制器 (UHC: USB Host Controller),工作在 从模式 的 USB 控制器,称为 USB 设备控制器 (UDC: USB Device Controller)。有的 USB 控制器,只能工作在 主模式 或 从模式 中的某一种;

weixin_49303682的博客 1440

单链表中倒数第K个结点

单链表中倒数第K个结点 链表结点定义如下: typedef int ElemType; typedef struct Node { ElemType data; struct Node *next; }HeadList; 为了得到倒数第k个结点,很自然的想法是先走到链表的尾部,再从尾部回溯k步。而题中所给的链表结点定义可以看出是单向链表,没有从后往前的指针,因此这种思路是行不通的。 既然不能从尾部回溯,我们可以把思路回到头结点上。 假设整个链表有n个结点,那么倒数第k个结点就是从头结点开始的第n

weixin_43973403的博客 1509

怀旧版电脑GBC模拟器

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

/* copyright@nciaebupt 转载请注明出处 题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的 尾指针。链表结点定义如下: struct ListNode { int value; ListNode* next; }; 分析:如果我们在遍历时维持两个指针,第一个指针从链表的头指针开始遍历,在第k-1步之前, 第二个指针保持不动;在第k-1步开始,第二

nciaebupt 1339

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

链表的倒数第k个结点

链表的倒数第k个结点 题目描述: 思路一: 为了能够只遍历一次就能找到倒数第k个节点,可以定义两个指针: 第一个指针从链表的头指针开始遍历向前走k,第二个指针保持不动; 从第k步开始,第二个指针也开始从链表的头指针开始遍历; 由于两个指针的距离保持在k,当第一个(也就是快的指针)走到空的时候,第二个指针(走在后面的)指针正好是倒数第k个结点。 代码如下: /** * Definition ...

weixin_43831728的博客 267

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

查找链表中倒数第 k个结点

<br /><br />题目:<br />输入一个单向链表,输出该链表中倒数第 k个结点。链表的倒数第 0个结点为链表的尾指针。<br />链表结点定义如下: <br />struct ListNode <br />{ <br />      int       m_nKey; <br />      ListNode* m_pNext; <br />}; <br />分析:<br />为了得到倒数第 k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,只有从前往后的指针而没有

淡蓝 605

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

一、题目 输入一个链表,输出该链表中倒数第k 个结点。为了符合大多数人的习惯,本题从1 开始计数,即链表的尾结点是倒数第1 个结点.例如一个链表有6 个结点,从头结点开始它们的值依次是1 、2、3、4、5 、6。这个个链表的倒数第3 个结点是值为4 的结点。 二、解题思路 为了实现只遍历链表一次就能找到倒数第k 个结点,我们可以定义两个指针。第一个指针从链表的头指针开始遍历向前走k-1步,第二个指...

皮卡丘的博客 264

链表中倒数第k个结点。

题目描述 输入一个链表,输出该链表中倒数第k个结点。 使p、h相距k /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* FindKthToTail(ListNo...

寻箐 209

查找链表中倒数第k个位置上的结点(k为正整数)

已知一个带有表头结点的单链表,结点结构为 data link 假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。若查找成功,算法输出该结点的data域的值,并返回1;否则,只返回0。 算法设计 定义两个指针p和q,让它们指向首元结点。 指针q先遍历list,当q移动到第k-1个结点时,p将加入循环,开始与q一同遍历链表,直到q->next==NULL。 此时指针p指向的结点就是倒数第k个结点。

Skyey_6的博客 1346
上一篇: 合并两个排序的链表
下一篇: 调整数组,使奇数在偶数前面
念殊15
博客等级 码龄8年 17粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值