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

牛客 —— 链表中倒数第k个结点(C语言,快慢指针,配图)

目录

1. 思路1:倒数第K个节点,就是整数第N-K+1的节点

2. 思路2:快慢指针


1. 思路1:倒数第K个节点,就是整数第N-K+1的节点

        链表中,一共有N个节点,如果我们想要得出倒数第K个节点,我们就可以简单理解为正数第N-K+1的节点。但因为需要多重判断,这里更推荐第二种方法,即快慢指针。

struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {
    int n =0;
    struct ListNode* cur = pListHead;
    //判断是否为链表是否为空
    if(pListHead == NULL)
    {
        return NULL;
    }

    while(cur)
    {
        n++;
        cur = cur->next;
    }
    //检查k是否超出界限
    if(k > n)
    {
        return NULL;
    }

    n = n-k;
    while(n--)
    {
        pListHead = pListHead->next;
    }
    return pListHead;
}

2. 思路2:快慢指针

        这里我们定义快指针fast,慢指针slow,让快指针先走k步,然后快慢指针同时走,当快指针等于NULL时,slow指针指向的节点就是倒数第K个节点

struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {
    // write code here
    struct ListNode* fast = pListHead;
    struct ListNode* slow = pListHead;
    while(k--)
    {
        if(fast == NULL)
        {
            return NULL;
        }
        fast = fast->next;
    }
    while(fast)
    {
        fast = fast->next;
        slow = slow->next;
    }
    return slow;
}


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

相关文章:

  • Go八股(Ⅵ)Goroutine 以及其中的锁和思想
  • Qwen2.5-Coder-32B-Instruct Docker 部署openai接口
  • ServletConfig、ServletContext、HttpServletRequest与HttpServletResponse常见API
  • 如何在 Ubuntu 上配置 Kotlin 应用环境 ?
  • [GXYCTF2019]BabyUpload--详细解析
  • 数据结构—栈和队列
  • Linux网络——HTTP
  • Swift 如何打造兼容新老系统的字符串分割(split)方法
  • <C++>类和对象下|初始化列表|explicit static|友元|内部类|匿名对象|构造函数的优化
  • vue-组件通信(二)
  • DHCP协议详解
  • 竞赛选题 疫情数据分析与3D可视化 - python 大数据
  • 机器学习笔记 - Ocr识别中的文本检测EAST网络概述
  • 机器视觉工程师吐槽的常见100个名场面
  • excel导入 Easy Excel
  • Android SdkManager简介
  • 网站优化工具Google Optimize
  • 微机原理_12
  • 比亚迪刀片电池与特斯拉4680电池比较
  • C语言循环结构 for循环
  • 若依框架数据源切换为pg库
  • 2311ddip1000不能从函数返回域引用
  • 牛客——OR36 链表的回文结构(C语言,配图,快慢指针)
  • quickapp_快应用_tabBar
  • rocketmq 安装dashboard1.0.0 mq消息控制台安装 rocketmq控制台安装 rocketmq-dashboard-1.0.0编译安装
  • mysql使用--表达式和函数