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

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.kler.cn/a/471371.html

相关文章:

  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验七----城市三维建模与分析(超超超详细!!!)
  • Docker镜像下载链接-开发工具集
  • 交换机划分Vlan配置
  • Objective-C语言的数据结构
  • 添加系统级res资源包
  • Apache Paimon-实时数据湖
  • pyhton 掩码 筛选显示
  • Python中的时间管理模块:whenever
  • nuxt3发请求
  • 秋叶大神中文版Stable Diffusion下载安装使用教程
  • PHP二维数组去除重复值
  • 9. C 语言 循环控制结构详解
  • Flutter 鸿蒙化 flutter和鸿蒙next混和渲染
  • 图漾相机基础操作
  • 更换WordPress主题的基础知识及注意事项
  • B-tree 数据结构详解
  • STM32 I2C硬件配置库函数
  • pytorch torch.isclose函数介绍
  • 基于单片机的室外休闲智能座椅设计(论文+源码)
  • 设计模式 行为型 策略模式(Strategy Pattern)与 常见技术框架应用 解析