前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《手撕链表题系列-4》链表中倒数第k个结点

《手撕链表题系列-4》链表中倒数第k个结点

作者头像
用户9645905
发布2022-11-30 11:43:53
1580
发布2022-11-30 11:43:53
举报
文章被收录于专栏:Linux学习~

前言

本系列主要讲解链表的经典题

注:划重点!!必考~

找到链表的中间结点

牛客链接:链表中倒数第k个结点_牛客题霸_牛客网 (nowcoder.com)

  • 题目描述:

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

  • 示例:
  • 解题思路:

  • 一般思路:

遍历链表两次

  • 高效思路:
  1. 使用两个指针
  2. 快指针先走k步
  3. 慢指针再与快指针一起走
  4. 当快指针走完时,慢指针走到倒数第k个结点

注意:k的大小可能超过链表长度这一特殊情况 注:这里我们来实现高效思路

  • 参考代码:
代码语言:javascript
复制
/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

/**
 * 
 * @param pListHead ListNode类 
 * @param k int整型 
 * @return ListNode类
 */
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {
    //链表不为NULL
    if(pListHead==NULL)
        return NULL;
    struct ListNode* slow=pListHead,*fast=pListHead;
    while(k--)
    {
        //节点数量比k小
        if(fast==NULL)
            return NULL;
        fast=fast->next;
    }
    //fast为NULL则停止
    while(fast)
    {
        fast=fast->next;
        slow=slow->next;
    }
    return slow;
}
  • 结果:

每日k题无烦恼,点赞学习不得了~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档