【剑指Offer】【链表】链表中倒数第k个结点
题目:输入一个链表,输出该链表中倒数第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个结点的更多相关文章
- [剑指Offer]22-链表中倒数第k个结点
题目链接 https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&tqId=11167&t ...
- 剑指Offer——二叉搜索树的第k个结点
题目描述: 给定一颗二叉搜索树,请找出其中的第k大的结点. 例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4 分析: 二叉搜索树中序遍历就是从小到大.只 ...
- 剑指Offer:面试题15——链表中倒数第k个结点(java实现)
问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...
- 《剑指offer》 链表中倒数第k个节点
本题来自<剑指offer> 链表中倒数第k个节点 题目: 输入一个链表,输出该链表中倒数第k个结点. 思路: 倒数第k个节点,而且只能访问一遍链表,定义两个节点,两者之间相差k个距离,遍历 ...
- 【Java】 剑指offer(22) 链表中倒数第k个结点
正文 本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的 ...
- 剑指Offer - 九度1517 - 链表中倒数第k个结点
剑指Offer - 九度1517 - 链表中倒数第k个结点2013-11-30 02:57 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(hint: 请务必使用链表.) 输入: 输入可能包含 ...
- 剑指Offer:链表中倒数第k个结点【22】
剑指Offer:链表中倒数第k个结点[22] 题目描述 输入一个链表,输出该链表中倒数第k个结点. 解题思考 我们定义两个指针L和R,R事先移动K-1个位置,然后两者同时往后移动直到遇到R的下个节点为 ...
- 【剑指Offer面试题】 九度OJ1517:链表中倒数第k个结点
鲁棒性是指程序可以推断输入是否符合规范要求,并对不和要求的输入予以 合理的处理. 题目链接地址: http://ac.jobdu.com/problem.php?pid=1517 题目1517:链表中 ...
- Go语言实现:【剑指offer】链表中倒数第k个结点
该题目来源于牛客网<剑指offer>专题. 输入一个链表,输出该链表中倒数第k个结点. Go语言实现: type ListNode struct { Val int Next *ListN ...
- 【剑指Offer面试编程题】题目1517:链表中倒数第k个结点--九度OJ
题目描述: 输入一个链表,输出该链表中倒数第k个结点. (hint: 请务必使用链表.) 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第一行为两个整数n和k(0< ...
随机推荐
- java原生的分页工具
@NoArgsConstructor @Data //生成 空参构造 get.set. tostring. equals. hascode public class PageUtils<T> ...
- ibatis批量数据入库sql
ibaits 批量数据入库sql <insert id="waiter.insertBatch" parameterClass="java.util.List&qu ...
- Spring全家桶(一)之Spring总结
0. Spring常用注解汇总 Spring常用注解汇总 使用注解之前要开启自动扫描功能,其中base-package为需要扫描的包(含子包). <context:component-scan ...
- reduced form(简化式)和structural form(结构式)
在复习软件构造的时候,我发现了这样一道练习题 例题要求我们对照给出的RI和AF画出相应的映射图.在这里产生了一个疑问,什么是reduced form?是分子小于分母的意思吗? 但是根据给出的答案,并不 ...
- Jenkins+Git+Gitlab+Ansible 持续集成和自动部署
- CCF 201909-1 小明种苹果
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...
- socket简记-消息格式
1 原理 1.1 数据格式 Packet header + Application body + Packet Tail 本协议中数据字节序为Little endian(超过一个字节的数据类型在内存中 ...
- 树莓派3B 查看GPU、CPU温度
参考:How to find out Raspberry Pi GPU and ARM CPU temperature on Linux GPU温度: /opt/vc/bin/vcgencmd mea ...
- 在 Vue 项目中使用 MQTT
Vue 是一款由尤雨溪及其团队开发的渐进式 Javascript 前端框架.该框架具备数据双向绑定.组件化.响应式和轻量等特点,搭配其脚手架 Vue CLI 使得开发者更加容易上手,大大减少了学习成本 ...
- py10函数之嵌套-名称空间作用域
# 函数是第一类对象:函数名指向的值可以被当中参数传递 # 1.函数名可以被传递# name = 'jason'# x = name# print(x)# print(id(x))# def func ...