前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【数据结构与算法面试题】单向链表倒数第k个节点

【数据结构与算法面试题】单向链表倒数第k个节点

作者头像
felixzhao
发布2021-09-06 10:09:46
3370
发布2021-09-06 10:09:46
举报
文章被收录于专栏:null的专栏
这里写图片描述
这里写图片描述

问题分析:遍历一遍链表的时间复杂度为O(n),但是链表节点的遍历只能按顺序遍历,问题中是需要取到倒数第k个,最直接的想法是遍历两遍链表,第1遍得到链表的长度,第2遍是取到倒数第k个;那么能否只遍历一遍就能取到倒数第k个节点,最关键的点是需要确定链表的长度,我们可以使用双指针的方法:第一个指针用于遍历整个链表,第二个链表用于遍历部分链表,第一个指针比第二个指针多走k步,当第一个指针遍历完链表,第二个指针所指的即为倒数第k个数,如下图所示:

这里写图片描述
这里写图片描述

方法:

代码语言:javascript
复制
ListNode* get_reverse_k(ListNode *head, int k){
    if (NULL == head) return NULL;

    ListNode *p = head;
    ListNode *q = head;
    int step = 0;
    while (NULL != p->m_pNext){
        if (step >= k){
            q = q->m_pNext;
        }
        p = p->m_pNext;
        step ++;
    }
    if (step < k) return NULL;
    else return q;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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