题目:

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

知识点:

  • 注意这种想法:找倒数第几个、中间的数或三分之一的数这种题,可以利用两个指针,通过指针移动的不同方式来实现

注意:

还是考虑的情况要周全,此题的头指针为空、k小于1、k大于链表长啊等等

代码实现:

定义2个指针pHead,pBehind,先让pHead先走(k-1),再一起走,当pHead走到链表尾端,pBehind也就指到了倒数第k个元素。

/*链表中倒数第k个节点*/
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {//头指针为空或者k小于1if (pListHead == nullptr || k < 1)return nullptr;//定义两个指针,稍后遍历链表ListNode* pHead = pListHead;ListNode* pBehind = nullptr;//如果k大于链表长,退出,否则pHead前移k-1位while (k > 1) {if (pHead->m_pNext != nullptr) {pHead = pHead->m_pNext;k -= 1;}else {return nullptr;}}//接下来两指针同时移动,至pHead移动至尾端,输出pBehindwhile (pHead->m_pNext != nullptr) {pHead = pHead->m_pNext;pBehind = pBehind->m_pNext;}return pBehind;
}int main()
{   ListNode* pNode1 = CreateListNode(1);ListNode* pNode2 = CreateListNode(2);ListNode* pNode3 = CreateListNode(3);ListNode* pNode4 = CreateListNode(4);ListNode* pNode5 = CreateListNode(5);ConnectListNodes(pNode1, pNode2);ConnectListNodes(pNode2, pNode3);ConnectListNodes(pNode3, pNode4);ConnectListNodes(pNode4, pNode5);ListNode* res = FindKthToTail(pNode1, 1);cout << res->m_nValue << endl;getchar();return 0;
}

剑指offer——22.链表中倒数第k个节点相关推荐

  1. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点

  2. 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点

    [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 文章目录 [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 一.遍历 二.双指针 总结 一.遍历 先遍历统计链表长 ...

  3. 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)

    19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...

  4. 剑指 Offer 22. 链表中倒数第k个节点(C语言)

    输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6 ...

  5. 【双100%解法】剑指 Offer 22. 链表中倒数第k个节点

    立志用最少的代码做最高效的表达 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的 ...

  6. 【算法】剑指 Offer 22. 链表中倒数第k个节点

    1.概述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3. ...

  7. leetcode 剑指 Offer 22. 链表中倒数第k个节点

    题目描述: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3 ...

  8. 剑指 Offer 22. 链表中倒数第k个节点

    双指针,间隔k-1,当前面的指针到最后一个节点时,输出后面的指针. class Solution {public ListNode getKthFromEnd(ListNode head, int k ...

  9. LeetCode-剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点 思路一:利用快慢双指针 /*** Definition for singly-linked list.* struct ListNode {* int ...

最新文章

  1. band math函数_ENVI波段运算(bandmath)运算逻辑及常用运算符详解
  2. []int 能转换为 []interface 吗?
  3. MySQL 排序、分页查询、聚合查询
  4. pandas to_sql保存数据到数据库后,添加自增长的主键ID(PRIMARY KEY)
  5. Linux的重要子目录
  6. mysql-5.7 group commit 详解
  7. python使用opencv图像聚类_Python3 OpenCV3图像处理-K-means 聚类
  8. 空间两条直线的夹角公式(两向量的夹角公式)
  9. 你以为在做的是微服务?不!你做的只是分布式单体!
  10. 基于3线spi通信的oled(cubemx图形化编程软件)
  11. 2021数学建模C题详细思路,代码,论文,参考文献
  12. 鸿蒙无极造化玉牒,上古十大至强神器,东皇钟只能排第四,另外七件你知道是哪七件吗...
  13. 【Python】盘点全网下载量Top100的Python库
  14. 码云推荐 | 那些优秀的网络爬虫工具介绍
  15. python和易语言哪个容易胖_碳水化合物和脂肪哪个更容易让身体发胖?
  16. 文本串加密和解密程序。一个文本串可用事先给定的字母映射表进行加密
  17. 2022年南京Java培训机构排名,实力突出遥遥领先
  18. 戴安娜血型仪tan提取信息
  19. 认定高新技术企业能得到什么好处
  20. chrony时间同步端口

热门文章

  1. 洛谷P1402 酒店之王
  2. 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简单介绍
  3. jquery easyui datagrid改变某行的值
  4. POJ 1001 Exponentiation (记第一道Java水过的题)
  5. 2008江西高考0分作文
  6. 【微型计算机原理与接口技术】计算机系统的基本组成
  7. 【jQuery笔记Part4】01-jQuery-节点操作-添加节点-删除节点-复制节点
  8. jq使用教程07_ JQData HTTP 接口正式上线
  9. 读书笔记_中国期货市场量化交易(李尉)05
  10. BP反向传播一文弄懂神经网络中的反向传播法