当前位置: 首页 > news >正文

02.02、返回倒数第 k 个节点

02.02、[简单] 返回倒数第 k 个节点

1、题目描述

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

2、题解思路

本题的关键在于使用双指针法,通过两个指针(fastslow),让 fast 指针比 slow 指针先走 k 步,这样当 fast 到达链表末尾时,slow 正好指向倒数第 k 个节点。

具体步骤如下:

  1. 初始化两个指针 fastslow,都指向链表的头节点。
  2. fast 先走 k 步,使得 fastslow 之间的距离为 k
  3. 同时移动 fastslow,直到 fast 到达链表的末尾。
  4. 此时,slow 指针所指向的节点就是倒数第 k 个节点,返回该节点的值。

3、详细代码解析

class Solution {
public:int kthToLast(ListNode* head, int k) {// 初始化两个指针,分别指向链表的头节点ListNode* fast = head;ListNode* slow = head;// 让 fast 指针先走 k 步while (k--) {fast = fast->next;}// 同时移动 fast 和 slow,直到 fast 到达链表的末尾// 当 fast 到达链表末尾时,slow 则正好指向倒数第 k 个节点,返回该节点的值while (fast) {fast = fast->next;slow = slow->next;}// slow 现在指向倒数第 k 个节点,返回该节点的值return slow->val;}
};

4、时间复杂度与空间复杂度

  • 时间复杂度O(n),其中 n 为链表的长度。由于我们只遍历了链表一次,因此时间复杂度是线性的。
  • 空间复杂度O(1),只用了两个指针,空间开销很小。

通过使用双指针技巧,我们可以在一次遍历中高效地找到倒数第 k 个节点。这个解法在不需要额外空间的情况下,能够很好地解决问题。

http://www.lryc.cn/news/522668.html

相关文章:

  • Linux手写FrameBuffer任意引脚驱动spi屏幕
  • 怎么修复损坏的U盘?而且不用格式化的方式!
  • 语音技术在播客领域的应用(2)
  • 【Linux】应用层自定义协议与序列化
  • 深度学习中的张量 - 使用PyTorch进行广播和元素级操作
  • gitignore忽略已经提交过的
  • h5使用video播放时关掉vant弹窗视频声音还在后台播放
  • Widows搭建sqli-labs
  • 为AI聊天工具添加一个知识系统 之46 蒙板程序设计(第一版):Facet六边形【意识形态:操纵】
  • ASP.NET Core WebApi接口IP限流实践技术指南
  • 文件移动工具 (File Mover)
  • PTA L1-039 古风排版
  • Docker 镜像加速的配置
  • 简历_使用优化的Redis自增ID策略生成分布式环境下全局唯一ID,用于用户上传数据的命名以及多种ID的生成
  • PHP的HMAC_SHA1和HMAC_MD5算法方法
  • 二进制/源码编译安装mysql 8.0
  • 2025-1-15-十大经典排序算法 C++与python
  • 头盔识别技术
  • DeepSeek-v3在训练和推理方面的优化
  • 将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(3 纯python的经济方案)
  • 1️⃣Java中的集合体系学习汇总(List/Map/Set 详解)
  • 闪豆多平台视频批量下载器
  • 深入解析:如何用Java爬取淘宝分类详情接口(cat_get)
  • 语音识别的预训练模型
  • element-ui制作多颜色选择器
  • JVM体系结构
  • wandb使用遇到的一些问题
  • Java中的继承
  • Cadence笔记--原理图导入PCB
  • 从AI生成内容到虚拟现实:娱乐体验的新边界