程序员面试金典:02.02. 返回倒数第 k 个节点

简介: 程序员面试金典:02.02. 返回倒数第 k 个节点

1. 题目

面试题 02.02. 返回倒数第 k 个节点


2. 描述

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。


注意:本题相对原题稍作改动


示例:


输入: 1->2->3->4->5 和 k = 2


输出: 4


说明:


给定的 k 保证是有效的。


3. 实现方法

3.1 方法 1

3.1.1 思路

设有两个指针 fast, slow 指向 head;

先将 fast 向后移动 k 次,此时 fast,slow 的距离为 k;

接着同时移动 fast,slow 直到 fast 指向 null;

此时slow.val 即为答案;

3.1.2 实现


public int kthToLast(ListNode head, int k) {
    // 初始化两个指针 fast,slow 指向 head
    ListNode slow = head;
    ListNode fast = head;
    // fast 先向后移动 k 个距离,然后 fast, slow 距离为 k
    for(int i = 0; i < k; i++){
        fast = fast.next;
    }
    // 同时移动 fast,slow 直到 fast 指向 null
    while(fast != null){
        slow = slow.next;
        fast = fast.next;
    }
    return slow.val;
}
目录
相关文章
|
2天前
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
20 10
|
1月前
|
JavaScript 前端开发 小程序
CoderGuide 程序员前后端面试题库,打造全网最高质量题库
CoderGuide涵盖范围包括且不限于:前端面试题(Vue,React,JS,HTTP,HTML,CSS面试题等),后端面试题(Java,Python,Golang,PHP,Linux,Mysql面试题等),以及算法面试题,大厂面试题,高频面试题,校招面试题等,你想要的,这里都有!
23 2
|
1月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】 GBDT面试题:其中基分类器CART回归树,节点的分裂标准是什么?与RF的区别?与XGB的区别?
文章讨论了梯度提升决策树(GBDT)中的基分类器CART回归树的节点分裂标准,并比较了GBDT与随机森林(RF)和XGBoost(XGB)的区别,包括集成学习方式、偏差-方差权衡、样本使用、并行性、最终结果融合、数据敏感性以及泛化能力等方面的不同。
29 1
|
2月前
|
JSON NoSQL MongoDB
面试题MySQL问题之想使用Neo4j查询可变数量的关系节点如何解决
面试题MySQL问题之想使用Neo4j查询可变数量的关系节点如何解决
35 1
|
3月前
|
前端开发 应用服务中间件 程序员
老程序员分享:Nginx相关面试题
老程序员分享:Nginx相关面试题
36 2
|
3月前
|
SQL JavaScript Java
java程序员面试题大全含答案(2018--2019)
java程序员面试题大全含答案(2018--2019)
|
22天前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
22天前
|
Java C++
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
这篇文章讨论了Java单继承的设计原因,指出Java不支持多继承主要是为了避免方法名冲突等混淆问题,尽管Java类不能直接继承多个父类,但可以通过接口和继承链实现类似多继承的效果。
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
|
22天前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。
|
22天前
|
Java
【Java基础面试三十七】、说一说Java的异常机制
这篇文章介绍了Java异常机制的三个主要方面:异常处理(使用try、catch、finally语句)、抛出异常(使用throw和throws关键字)、以及异常跟踪栈(异常传播和程序终止时的栈信息输出)。