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

【LeetCode】数据结构题解(3)[查找链表中倒数第k个节点]

查找链表种倒数第k个节点

  • 1.题目来源
  • 2.题目描述
  • 3.解题思路
  • 4.代码展示

所属专栏:玩转数据结构题型
博主首页:初阳785
代码托管:chuyang785
感谢大家的支持,您的点赞和关注是对我最大的支持!!!
博主也会更加的努力,创作出更优质的博文!!
关注我,关注我,关注我,重要的事情说三遍!!!!!!!!

1.题目来源

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

2.题目描述

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

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

在这里插入图片描述

3.解题思路

这个和之前的查找链表中间节点的题型有点像,可以说是升级版的的吧。
但是我们的解题思路还是有点不一样的。

我们的思路还是定义一个快慢指针(如果有小伙伴不知道快慢指针的可以去我的专栏玩转数据结构题型中的解题(2)中有讲解到)fast和low。
既然我们要找到倒数第k个数的话,我们不妨先让fast走k步,走完后我们的fast和low一起走,等到我们fast结束后,我们的low就找到了我们的倒数第k个节点。

在这里插入图片描述
在这里插入图片描述
fast先走k步。
在这里插入图片描述
走完后fast和low一起走,fast=NULL的时候停止,这个时候low就找到了倒数第k个位置的节点。

4.代码展示

struct ListNode* getKthFromEnd(struct ListNode* head, int k)
{

    struct ListNode *fast=head,*low=head;
    //先让fast走k步
    while(k--)
    {
        if(fast==NULL)
        {
            return NULL;
        }
        fast=fast->next;
    }
    //fast和low一起走
    while(fast)
    {
        low=low->next;
        fast=fast->next;
    }
    return low;
}

http://www.kler.cn/a/13803.html

相关文章:

  • Mongo集群化部署+高可用架构
  • 使用chatgpt 调试 paddleocr 的模型迁移学习
  • 内卷的上海车展上,百度Apollo带来新型开放整零关系
  • Linux文件IO常用函数
  • IT知识百科:什么是SSID?
  • nodejs+vue 蛋糕甜品商城系统
  • chown 命令
  • Windows逆向安全(一)之基础知识(十五)
  • HttpClientDemo
  • 一文解析:低代码开发平台和零代码平台有什么区别?以及如何选?
  • es查询某个字段是否存在或为空
  • 17.数据表格.下
  • OpenAI最新官方ChatGPT聊天插件接口《插件身份验证》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(三)(附源码)
  • HashMap 的特点及其优缺点以及底层实现
  • C learning_8
  • 使用OpenAI API(或ChatGPTAPI)的时候应该选择哪个model
  • 涨点技巧: 谷歌强势推出优化器Lion,引入到Yolov8,内存更小、效率更高,秒杀Adam(W)
  • Win10桌面我的电脑怎么调出来?最简单方法教学
  • 基于GPS/北斗卫星技术的无盲区车辆调度系统
  • 记录关于GPT的应用