剑指offer——面试题22:链表中倒数第k个节点
注意代码的鲁棒性!
函数:
ListNode* TheLastKthNode(ListNode* pHead,int k)
{
if(pHead==nullptr || k<=)
return nullptr;
ListNode* quickNode=pHead;
ListNode* slowNode=pHead;
int cnt=;
while(quickNode->m_pNext!=nullptr&&cnt<k)
{
quickNode=quickNode->m_pNext;
++cnt;
}
if(cnt<k)
return nullptr;
while(quickNode->m_pNext!=nullptr)
{
quickNode=quickNode->m_pNext;
slowNode=slowNode->m_pNext;
}
return slowNode;
}
测试代码:
#include"List.h" void Test(char* testName,ListNode* pHead,int k,int expect)
{
cout<<testName<<":";
ListNode* result=TheLastKthNode(pHead,k);
if(result==nullptr)
{
cout<<"Invalid input."<<endl;
}
else if(result->m_Value==expect)
{
cout<<"Passed."<<endl;
}
else
cout<<"Failed."<<endl;
} void Test1_7()
{
ListNode* pNode1=CreateListNode(); Test("test0",pNode1,,);
ListNode* pNode2=CreateListNode();
ListNode* pNode3=CreateListNode();
ListNode* pNode4=CreateListNode();
ListNode* pNode5=CreateListNode(); ConnectListNodes(pNode1,pNode2);
ConnectListNodes(pNode2,pNode3);
ConnectListNodes(pNode3,pNode4);
ConnectListNodes(pNode4,pNode5); Test("test1",pNode1,,-);
Test("test2",pNode1,,);
Test("test3",pNode1,,);
Test("test4",pNode1,,);
Test("test5",pNode1,,);
Test("test6",pNode1,,); Test("test7",nullptr,,-); } int main()
{
Test1_7();
return ;
}
剑指offer——面试题22:链表中倒数第k个节点的更多相关文章
- 剑指offer(14)链表中倒数第K个节点
题目描述 输入一个链表,输出该链表中倒数第k个节点. 题目分析 用两个指针来跑,两个指针中间相距k-1个节点,第一个指针先跑,跑到了第k个节点时,第二个指针则是第一个节点. 这时候两个一起跑.当第一个 ...
- 剑指Offer:面试题15——链表中倒数第k个结点(java实现)
问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...
- 【剑指offer】面试题 22. 链表中倒数第 K 个节点
面试题 22. 链表中倒数第 K 个节点
- 剑指Offer - 九度1517 - 链表中倒数第k个结点
剑指Offer - 九度1517 - 链表中倒数第k个结点2013-11-30 02:57 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(hint: 请务必使用链表.) 输入: 输入可能包含 ...
- 【剑指Offer】面试题22. 链表中倒数第k个节点
题目 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5.6. ...
- 《剑指offer》面试题22. 链表中倒数第k个节点
问题描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...
- LeetCode 面试题22. 链表中倒数第k个节点
题目链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ 输入一个链表,输出该链表中倒数第 ...
- C语言面试题22. 链表中倒数第k个节点
要求:输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5.6. ...
- 力扣题解-面试题22. 链表中倒数第K个节点
题目描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...
- 剑指offer十四之链表中倒数第k个结点
一.题目 输入一个链表,输出该链表中倒数第k个结点. 二.思路 两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点.然后两个指针同时往后移动,当第一个结 ...
随机推荐
- Charles 4.2.5 破解原理.RP
请支持正版,仅供技术交流. 写了个小工具方便在线处理,在线破解 https://github.com/8enet/Charles-Crack 2018/4/8 Charles 4.2.5 替换类名和方 ...
- 【#】Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释
Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释 博客分类: spring MVCSpringWebXMLBean 一:配置 ...
- linux 创建数据库
mysql -uroot -pxxxxxx 1. 修改服务器的字符集 打开/etc/mysql/my.cnf,在[mysqld]后添加character-set-server=utf8 2. 查看my ...
- Git & Github使用总结
Linux下git的安装 在终端下输入 git , 看系统有没有安装git. 如果没有安装则会出现以下提醒: The program 'git' is currently not installed. ...
- 编写高质量代码改善C#程序的157个建议——建议130:以复数命名枚举类型,以单数命名枚举元素
建议130:以复数命名枚举类型,以单数命名枚举元素 枚举类型应该具有负数形式,它表达的是将一组相关元素组合起来的语义.比如: enum Week { Monday, Tuesday, Wednesda ...
- 编写高质量代码改善C#程序的157个建议——建议90:不要为抽象类提供公开的构造方法
建议90:不要为抽象类提供公开的构造方法 首先,抽象类可以有构造方法.即使没有为抽象类指定构造方法,编译器也会为我们生成一个默认的protected的构造方法.下面是一个标准的最简单的抽象类: abs ...
- 深入理解java虚拟机(四)垃圾收集算法及HotSpot实现
垃圾收集算法 一般来说,垃圾收集算法分为四类: 标记-清除算法 最基础的算法便是标记-清除算法(Mark-Sweep).算法分为“标记”和“清除”两个阶段:首先标记处需要收集的对象,在标记完成之后,再 ...
- 上下文——webApplicationContext 与servletContext
1.WebApplicationContext的研究 ApplicationContext是spring的核心,Context通常解释为上下文环境,用“容器”来表述更容易理解一些,Applicatio ...
- 终端工具putty访问vmware centos系统
当我们安装好后,可以通过shell来输入命令行来操作centos,当我们一般为了方便可以用终端进行远程连接虚拟机. 软件下载:http://www.chiark.greenend.org.uk/~sg ...
- VC6.0 多线程输出乱序问题
今天尝试编写多线程最简单的例子 #include "stdafx.h" #include "windows.h" #include <iostream&g ...