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

A1:先从头到尾扫描链表,得到链表的总长度n,然后再扫描一次链表,输出n-k+1处的结点  ===> 测试用例超时

A2:创建两个指针,一个遍历链表到k处,若链表已指向空,则返回false

   到k处后,进入第二个循环,指针A与指针B一起向后移动,当指针A指向nullptr时返回,结果为指针B指向的结点

   因为指针A和指针B一直保持k距离

/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if ((pListHead == nullptr) || (k < 1))
{
return nullptr;
}
ListNode* pNodeA = pListHead;
ListNode* pNodeB = pListHead; while (k > 0)
{
if (pNodeA == nullptr)
{
return nullptr;
}
pNodeA = pNodeA->next;
k--;
}
while (pNodeA != nullptr)
{
pNodeA = pNodeA->next;
pNodeB = pNodeB->next;
}
return pNodeB;
}
};

  

//这个解法,是两个指针距离保持在k-1的,在VS下成功通过,但是在牛客编辑器中说有段错误,很奇怪

//和上一个解法差不多相同

ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {

		if ((pListHead == nullptr) || (k < 1))
{
return nullptr;
}
ListNode* pNodeA = pListHead;
ListNode* pNodeB = pListHead;
ListNode* pNodeA = pListHead;
ListNode* pNodeB = pListHead; while (k > 1)
{
if (pNodeA == nullptr)
{
return nullptr;
}
pNodeA = pNodeA->next;
k--;
}
while (pNodeA->next != nullptr)
{
pNodeA = pNodeA->next;
pNodeB = pNodeB->next;
}
return pNodeB;
}

  

【剑指Offer】【链表】链表中倒数第k个结点的更多相关文章

  1. [剑指Offer]22-链表中倒数第k个结点

    题目链接 https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&tqId=11167&t ...

  2. 剑指Offer——二叉搜索树的第k个结点

    题目描述: 给定一颗二叉搜索树,请找出其中的第k大的结点. 例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4 分析: 二叉搜索树中序遍历就是从小到大.只 ...

  3. 剑指Offer:面试题15——链表中倒数第k个结点(java实现)

    问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...

  4. 《剑指offer》 链表中倒数第k个节点

    本题来自<剑指offer> 链表中倒数第k个节点 题目: 输入一个链表,输出该链表中倒数第k个结点. 思路: 倒数第k个节点,而且只能访问一遍链表,定义两个节点,两者之间相差k个距离,遍历 ...

  5. 【Java】 剑指offer(22) 链表中倒数第k个结点

    正文 本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的 ...

  6. 剑指Offer - 九度1517 - 链表中倒数第k个结点

    剑指Offer - 九度1517 - 链表中倒数第k个结点2013-11-30 02:57 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(hint: 请务必使用链表.) 输入: 输入可能包含 ...

  7. 剑指Offer:链表中倒数第k个结点【22】

    剑指Offer:链表中倒数第k个结点[22] 题目描述 输入一个链表,输出该链表中倒数第k个结点. 解题思考 我们定义两个指针L和R,R事先移动K-1个位置,然后两者同时往后移动直到遇到R的下个节点为 ...

  8. 【剑指Offer面试题】 九度OJ1517:链表中倒数第k个结点

    鲁棒性是指程序可以推断输入是否符合规范要求,并对不和要求的输入予以 合理的处理. 题目链接地址: http://ac.jobdu.com/problem.php?pid=1517 题目1517:链表中 ...

  9. Go语言实现:【剑指offer】链表中倒数第k个结点

    该题目来源于牛客网<剑指offer>专题. 输入一个链表,输出该链表中倒数第k个结点. Go语言实现: type ListNode struct { Val int Next *ListN ...

  10. 【剑指Offer面试编程题】题目1517:链表中倒数第k个结点--九度OJ

    题目描述: 输入一个链表,输出该链表中倒数第k个结点. (hint: 请务必使用链表.) 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第一行为两个整数n和k(0< ...

随机推荐

  1. mysql数据库查看版本号

    1.在命令行登录mysql,即可看到mysql的版本号 [root@mysql02 bin]# ./mysql -uroot -pEnter password: Welcome to the MySQ ...

  2. 关于paddleocr2.6 布局分析的踩坑总结(一)

    8月24日paddleocr发布了2.6.0,之前使用过2.5版本的布局分析,整体比较好用.近期就尝试了一下paddleocr的新版本,记录一下尝鲜经历.2.6版本的公告中指出,布局分析模型缩小了95 ...

  3. Cisco——ASA和winserver2016配置l2tp over ipsec连接

    Cisco--ASA和winserver2016配置l2tp over ipsec连接 L2tp over ipsec vpn配置 网络拓扑图: 配置vpn时要确保Winserver15能够ping通 ...

  4. element-ui组件Table排序(sort-by),某些数据无需排序

    在列中设置 sortable 属性即可实现以该列为基准的排序, 接受一个 Boolean,默认为 false. 可以通过 Table 的 default-sort 属性设置默认的排序列和排序顺序. 可 ...

  5. 常用ansible命令梳理

    命令的具体格式 : ansible <host-pattern> [-f forks] [-m module_name] [-a args] 场景 命令 查询线上所有机器某个文件的含有某个 ...

  6. 谷歌浏览器上elementUI的按钮文字消失了

    解决方案:有个谷歌浏览器插件,好像是什么淘宝的,删掉即可

  7. Excel VBA实例

    有个朋友让帮忙看下excel数据怎么处理,初步一看有点复杂,难以下手.进一步分析.搜索,发现VBA可以很好地解决这个问题,总结记录一下. 问题描述:如下图,有N个sheet,每个sheet记录了一个公 ...

  8. react native 中 fetch获取请求头header 的token信息

    首先说一句,所有请求,都要带一个token信息,很难受啊,我目前直接将token信息放在global下自定的属性里面.(本地存储Storage和AsyncStorage,取一下,好麻烦) global ...

  9. CCF 201909-2 小明种苹果(续)

    #include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...

  10. Win7+VS2010 环境配置

    最后再次总结一些,Win7下的VS2010总共有三个变量配置: 1. 变量名:path 变量值:D:\Program Files\Microsoft Visual Studio 10.0\VC\bin ...