作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。

如果该链表长度小于k,请返回一个长度为 0 的链表。

数据范围:0<=n<=10^5,0<=ai<=10^9,0<=k<=10^9

要求:空间复杂度O(n),时间复杂度O(n)

进阶:空间复杂度O(1),时间复杂度O(n)

例如输入{1,2,3,4,5},2时,对应的链表结构如下图所示:

其中蓝色部分为该链表的最后2个结点,所以返回倒数第2个结点(也即结点值为4的结点)即可,系统会打印后面所有的节点来比较。

示例:

输入:

{1,2,3,4,5},2

返回值:

{4,5}

说明:

返回倒数第2个节点4,系统会打印后面所有的节点来比较。

解题思路:

本题考察数据结构链表的使用。本题常用两种思路,一种是比较基础的,就是用容器把链表指针依次存储,输出倒数第k个即可,这样空间复杂度为O(n);另一种进阶解法,快慢指针法,让快指针先走k步,当它走到头时,此时慢指针的位置就是倒数第k个结点。

测试代码为快慢指针法,容器法比较简单就不写了。

测试代码:

/*** struct ListNode {*  int val;*   struct ListNode *next;* ListNode(int x) : val(x), next(nullptr) {}* };*/
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pHead ListNode类 * @param k int整型 * @return ListNode类*/ListNode* FindKthToTail(ListNode* pHead, int k) {// 空链表直接返回if(pHead == NULL)return pHead;// 快慢指针ListNode *fast = pHead;ListNode *slow = pHead;// 让快指针先走k步while(k--){if(fast == NULL)return NULL;fast = fast->next;}// 当快指针走完时,慢指针的位置就是倒数第k个结点while(fast != NULL){fast = fast->next;slow = slow->next;}return slow;}
};

剑指offer(C++)-JZ22:链表中倒数最后k个结点(数据结构-链表)相关推荐

  1. 程序员面试题精选100题(09)-链表中倒数第k个结点[数据结构]

    题目:输入一个单向链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针.链表结点定义如下: struct ListNode {       int       m_nKey;      ...

  2. 一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针

    输入一个单向链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针 typedef struct _node_t {struct _node_t *next;int data; }Nod ...

  3. 蓝蓝算法06--输出链表中倒数第k个结点

    题目描述 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针. 链表结点定义如下: struct ListNode {int m_nKey;ListNode* m_pNe ...

  4. 【编程题目】输入一个单向链表,输出该链表中倒数第 k 个结点

    第 13 题(链表): 题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表 的尾指针. 链表结点定义如下: struct ListNode { int m_nKey ...

  5. 华为机试HJ51:输出单向链表中倒数第k个结点

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针. ...

  6. c语言找出链表中倒数第k的数,查找链表中倒数第k个结点

    题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针. 分析:为了得到倒数第 k 个结点,很自然的想法是先走到链表的尾端,再从尾端回溯 k 步.可是输入的是单 ...

  7. 剑指Offer #14 链表中倒数第k个结点(快慢指针) | 图文详解

    题目来源:牛客网-剑指Offer专题 题目地址:链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 节点结构如下: public class ListNode {int val ...

  8. 剑指offer:链表中倒数第k个结点 python实现

    链表中倒数第k个结点 输入一个链表,输出该链表中倒数第k个结点. 解题思路 暴力求解: 判断链表是否为空: 复制链表,遍历一遍统计其长度: 如果长度小于k.则返回None: 否则,返回其长度-k的链表 ...

  9. 《剑指offer》链表中倒数第k个结点

    题目:输入一个链表,输出该链表中倒数第k个结点. 解析:需要逆向输出节点,可以正向把所有的节点都保存到list里,然后再逆向的输出 /* public class ListNode {int val; ...

最新文章

  1. UI设计学习的对比原则怎么运用?
  2. android 图片缩放算法,Android大图加载,缩放,滑动浏览--SubsamplingScaleImageView 源码分析大图加载...
  3. 微信的行程卡服务器异常,行程卡打不开服务器崩了解决方法 行程卡短信查询步教程...
  4. 糖尿病(消渴)的中药简见简方(转载)
  5. python面向对象继承_Python 面向对象 --- 继承
  6. 一张图带你看懂 ,web前端开发应该知道的HTML5六大趋势
  7. js 中exec、test、match、search、replace、split用法
  8. Theme相关:button的效果不显示
  9. 自然语言处理——词性标注实战
  10. 折线分割平面(递推dp)
  11. [CareerCup] 17.1 Swap Number In Place 互换位置
  12. 用形态学及HSV完成车牌照识别
  13. 大话设计模式之爱你一万年:第十三章 行为型模式:策略模式:女友在手,说走就走:1.策略模式概念
  14. python生成的词云没有图案_python词云(词云图生成器)
  15. 怎么把pdf文件压缩到最小?
  16. Java经典问题算法大全
  17. 影子传文件到服务器,影子传说——文件超级隐身术
  18. 数据结构与算法——23. 用嵌套列表与链表实现树结构
  19. 惯性导航原理(1):导航坐标系及相互转换
  20. 为资产分类定义折旧范围_FI-AA配置逻辑

热门文章

  1. CAP 定理 —— 可用性 (Availability) 和分区容忍 (Partition tolerance)
  2. zookeeper配置与使用
  3. C语言动态链表数据结构
  4. mysqldump 导出中文乱码
  5. Bamboo基础概念
  6. CENTOS 7.0 安装discuz ,搭 mysql +php+apache 环境
  7. Error:Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory Android
  8. GNS3连接VMware中虚拟主机,能相互ping通
  9. 在ISA2006以SSL-TO-HTTP方式发布内部的WEB服务器(一)
  10. 基于Redis的微博关注与粉丝