剑指offer——22.链表中倒数第k个节点
题目:
输入一个链表,输出该链表中倒数第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个节点相关推荐
- 【每日一题】剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点
- 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点
[LeetCode]剑指 Offer 22. 链表中倒数第k个节点 文章目录 [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 一.遍历 二.双指针 总结 一.遍历 先遍历统计链表长 ...
- 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)
19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...
- 剑指 Offer 22. 链表中倒数第k个节点(C语言)
输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6 ...
- 【双100%解法】剑指 Offer 22. 链表中倒数第k个节点
立志用最少的代码做最高效的表达 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的 ...
- 【算法】剑指 Offer 22. 链表中倒数第k个节点
1.概述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3. ...
- leetcode 剑指 Offer 22. 链表中倒数第k个节点
题目描述: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3 ...
- 剑指 Offer 22. 链表中倒数第k个节点
双指针,间隔k-1,当前面的指针到最后一个节点时,输出后面的指针. class Solution {public ListNode getKthFromEnd(ListNode head, int k ...
- LeetCode-剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点 思路一:利用快慢双指针 /*** Definition for singly-linked list.* struct ListNode {* int ...
最新文章
- band math函数_ENVI波段运算(bandmath)运算逻辑及常用运算符详解
- []int 能转换为 []interface 吗?
- MySQL 排序、分页查询、聚合查询
- pandas to_sql保存数据到数据库后,添加自增长的主键ID(PRIMARY KEY)
- Linux的重要子目录
- mysql-5.7 group commit 详解
- python使用opencv图像聚类_Python3 OpenCV3图像处理-K-means 聚类
- 空间两条直线的夹角公式(两向量的夹角公式)
- 你以为在做的是微服务?不!你做的只是分布式单体!
- 基于3线spi通信的oled(cubemx图形化编程软件)
- 2021数学建模C题详细思路,代码,论文,参考文献
- 鸿蒙无极造化玉牒,上古十大至强神器,东皇钟只能排第四,另外七件你知道是哪七件吗...
- 【Python】盘点全网下载量Top100的Python库
- 码云推荐 | 那些优秀的网络爬虫工具介绍
- python和易语言哪个容易胖_碳水化合物和脂肪哪个更容易让身体发胖?
- 文本串加密和解密程序。一个文本串可用事先给定的字母映射表进行加密
- 2022年南京Java培训机构排名,实力突出遥遥领先
- 戴安娜血型仪tan提取信息
- 认定高新技术企业能得到什么好处
- chrony时间同步端口