[剑指Offer]22-链表中倒数第k个结点
题目链接
题意
求链表倒数第k个节点,计数从1开始。
题解
- 法一:遍历两遍。
第一遍求链表长度,第二遍直接找到节点。 - 法二:遍历一遍。双指针指向链表头部,第一个指针先走k-1个,然后两个指针同步走,当先走的指针走到链表尾节点,后走的指针指向的就是倒数k个节点。 - 关于鲁棒性:要考虑指针为nullptr、k=0、k大于链表长度的三种特殊情况。
相关知识
可以多考虑用双指针指向链表解题(与链表结点位置相关题目),类似的,若求链表中点:遍历一遍的做法是,两个指针同时同头部出发,一个每次走一步,另一个每次走两步,则当快的指针走到尾节点,慢的指针即指向中间节点。
法二代码
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(!pListHead||k==0){
return nullptr;
}
ListNode* pFast=pListHead;
ListNode* pSlow=pListHead;
int step=k-1;
while(step--){
if(!pFast->next){//注意,否则经过下一步pFast指针将指向尾后节点,即k大于链表长度了。
return nullptr;
}
pFast=pFast->next;
}
while(pFast->next){
pFast=pFast->next;
pSlow=pSlow->next;
}
return pSlow;
}
};
[剑指Offer]22-链表中倒数第k个结点的更多相关文章
- 【Java】 剑指offer(22) 链表中倒数第k个结点
正文 本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的 ...
- 剑指Offer:链表中倒数第k个结点【22】
剑指Offer:链表中倒数第k个结点[22] 题目描述 输入一个链表,输出该链表中倒数第k个结点. 解题思考 我们定义两个指针L和R,R事先移动K-1个位置,然后两者同时往后移动直到遇到R的下个节点为 ...
- 剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点 Offer 22 常规解法 常规解法其实很容易可以想到,只需要先求出链表的长度,然后再次遍历取指定长度的链接即可. package com.walega ...
- 力扣 - 剑指 Offer 22. 链表中倒数第k个节点
题目 剑指 Offer 22. 链表中倒数第k个节点 思路1(栈) 既然要倒数第k个节点,那我们直接把所有节点放到栈(先进后出)里面,然后pop弹出k个元素就可以了 代码 class Solution ...
- LeetCode 剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点 题意 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个 ...
- Go语言实现:【剑指offer】链表中倒数第k个结点
该题目来源于牛客网<剑指offer>专题. 输入一个链表,输出该链表中倒数第k个结点. Go语言实现: type ListNode struct { Val int Next *ListN ...
- 剑指Offer 14. 链表中倒数第k个结点 (链表)
题目描述 输入一个链表,输出该链表中倒数第k个结点. 题目地址 https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?t ...
- 剑指offer:链表中倒数第k个结点
问题描述 输入一个链表,输出该链表中倒数第k个结点. 解题思路 两个指针都指向头结点,第一个指针先移动k-1个结点,之后两指针同时移动,当第一个指针到链表尾的时候,第二个指针刚好指向倒数第k个结点. ...
- 剑指offer例题——链表中倒数第K个结点
题目描述 输入一个链表,输出该链表中倒数第k个结点. 编程过程 此处采用两个指针依次后移的方法来求解,首先,用一个指针移到第k个位置,之后将第二个指针放在第一位,与第二个指针一同移动,当第二个指针移动 ...
- 《剑指offer》链表中倒数第k个结点
一.题目描述 输入一个链表,输出该链表中倒数第k个结点. 二.输入描述 一个链表 三.输出描述 链表的倒数第k个结点 四.牛客网提供的框架 /* struct ListNode { int val; ...
随机推荐
- addEventListener 的事件冒泡
语法 target.addEventListener(type, listener, useCapture); target 文档节点.document.window 或 XMLHttpRequest ...
- JSP页面java代码报错:Purgoods cannot be resolved to a type
错误提示 : Purgoods cannot be resolved to a type Purgoods不能解析为一个类型 原因 : 缺少引入Purgoods类 页面中引入java类,执行java代 ...
- AJax知识介绍
参考:http://www.runoob.com/ajax/ajax-asp-php.html
- eclipse中导入java类失败的问题
在 Eclips 开发时,新建了一个 Dynamic Web Project,在运行jsp文件时tomcat报错: org.apache.jasper.JasperException: Unable ...
- Zabbix使用Omsa来监控Dell服务器的硬件状态
OMSA(Open Manage Server Administrator)是Dell主机的硬件检测和维护软件 OpenManage系统管理方案是戴尔公司基于自主研发力量开发的IT系统管理解决方案,通 ...
- httpClient服务端编写
以前用过HttpClient,给你说几个关键的地方吧: 1. 首先,发送的时候 HttpClient client = new HttpClient(); PostMethod method = ne ...
- UNION 与 UNION ALL的区别
UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,列的数量.数据类型.顺序要保持一致!!! 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名. 例子: ...
- hexo发表博文
3.4创建博客文章与发布 在hexo 目录下终端命令: $ hexo new '文件名' //会在source/_posts创建一个文件名.md文件 这就可以使用markdown编辑器开始写自己的博客 ...
- ubuntu上安装mysql的正确步骤
1.在Ubuntu software Center中下载mysql:[注:mysql下载下来后好像就安装上了] 2.使用命令检查mysql是否已安装上: 2.1 运行sudo netstat -tap ...
- Oracle 未能加载文件或程序集Oracle.DataAccess
原文地址;https://www.cnblogs.com/xuekai-to-sharp/p/3586071.html 关键是引用DLL:Oracle.DataAccess.dll DLL文件的路径: ...