剑指offer(C++)-JZ22:链表中倒数最后k个结点(数据结构-链表)
作者:翟天保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个结点(数据结构-链表)相关推荐
- 程序员面试题精选100题(09)-链表中倒数第k个结点[数据结构]
题目:输入一个单向链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针.链表结点定义如下: struct ListNode { int m_nKey; ...
- 一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针
输入一个单向链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针 typedef struct _node_t {struct _node_t *next;int data; }Nod ...
- 蓝蓝算法06--输出链表中倒数第k个结点
题目描述 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针. 链表结点定义如下: struct ListNode {int m_nKey;ListNode* m_pNe ...
- 【编程题目】输入一个单向链表,输出该链表中倒数第 k 个结点
第 13 题(链表): 题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表 的尾指针. 链表结点定义如下: struct ListNode { int m_nKey ...
- 华为机试HJ51:输出单向链表中倒数第k个结点
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针. ...
- c语言找出链表中倒数第k的数,查找链表中倒数第k个结点
题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针. 分析:为了得到倒数第 k 个结点,很自然的想法是先走到链表的尾端,再从尾端回溯 k 步.可是输入的是单 ...
- 剑指Offer #14 链表中倒数第k个结点(快慢指针) | 图文详解
题目来源:牛客网-剑指Offer专题 题目地址:链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 节点结构如下: public class ListNode {int val ...
- 剑指offer:链表中倒数第k个结点 python实现
链表中倒数第k个结点 输入一个链表,输出该链表中倒数第k个结点. 解题思路 暴力求解: 判断链表是否为空: 复制链表,遍历一遍统计其长度: 如果长度小于k.则返回None: 否则,返回其长度-k的链表 ...
- 《剑指offer》链表中倒数第k个结点
题目:输入一个链表,输出该链表中倒数第k个结点. 解析:需要逆向输出节点,可以正向把所有的节点都保存到list里,然后再逆向的输出 /* public class ListNode {int val; ...
最新文章
- UI设计学习的对比原则怎么运用?
- android 图片缩放算法,Android大图加载,缩放,滑动浏览--SubsamplingScaleImageView 源码分析大图加载...
- 微信的行程卡服务器异常,行程卡打不开服务器崩了解决方法 行程卡短信查询步教程...
- 糖尿病(消渴)的中药简见简方(转载)
- python面向对象继承_Python 面向对象 --- 继承
- 一张图带你看懂 ,web前端开发应该知道的HTML5六大趋势
- js 中exec、test、match、search、replace、split用法
- Theme相关:button的效果不显示
- 自然语言处理——词性标注实战
- 折线分割平面(递推dp)
- [CareerCup] 17.1 Swap Number In Place 互换位置
- 用形态学及HSV完成车牌照识别
- 大话设计模式之爱你一万年:第十三章 行为型模式:策略模式:女友在手,说走就走:1.策略模式概念
- python生成的词云没有图案_python词云(词云图生成器)
- 怎么把pdf文件压缩到最小?
- Java经典问题算法大全
- 影子传文件到服务器,影子传说——文件超级隐身术
- 数据结构与算法——23. 用嵌套列表与链表实现树结构
- 惯性导航原理(1):导航坐标系及相互转换
- 为资产分类定义折旧范围_FI-AA配置逻辑
热门文章
- CAP 定理 —— 可用性 (Availability) 和分区容忍 (Partition tolerance)
- zookeeper配置与使用
- C语言动态链表数据结构
- mysqldump 导出中文乱码
- Bamboo基础概念
- CENTOS 7.0 安装discuz ,搭 mysql +php+apache 环境
- Error:Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory Android
- GNS3连接VMware中虚拟主机,能相互ping通
- 在ISA2006以SSL-TO-HTTP方式发布内部的WEB服务器(一)
- 基于Redis的微博关注与粉丝