当前位置: 首页 > article >正文

【Java 数据结构】面试题 02.02. 返回倒数第 k 个节点

 🔥博客主页🔥:【 坊钰_CSDN博客 】

欢迎各位点赞👍评论✍收藏⭐

目录

1. 题目

2. 解析

2.1 普通方法

2.1 快慢节点方法

3. 代码实现

3.1 普通方法

 3.2 快慢节点方法

4. 小结


 

1. 题目

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

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

示例:

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

说明:

给定的 k 保证是有效的。

2. 解析

2.1 普通方法

参考该博客:【Java 数据结构】链表的中间结点-CSDN博客

2.1 快慢节点方法

  • 先让块节点先走 K - 1 步,然后在块节点和慢节点一块走,当块节点到头,慢节点就是目标节点

3. 代码实现

3.1 普通方法

class Solution {
    public int kthToLast(ListNode head, int k) {
        int count = 0;
        ListNode ret = head;
        while (ret != null) {
            count++;
            ret = ret.next;
        }
        count = count - k;
        ret = head;
        while (count != 0) {
            ret = ret.next;
            count--;
        }
        return ret.val;
    }
}

 3.2 快慢节点方法

class Solution {
    public int kthToLast(ListNode head, int k) {
        ListNode fast = head;
        ListNode slow = head;
        int count = k - 1;
        while (count != 0) {
            fast = fast.next;
            count--;
        }
        while (fast.next != null) {
            fast = fast.next;
            slow = slow.next;
        }
        return slow.val;
    }
}

4. 小结

以上就是对该题的了解,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持 


http://www.kler.cn/a/458616.html

相关文章:

  • 计算机网络 (7)物理层下面的传输媒体
  • 宝塔-firefox(Docker应用)-构建自己的Web浏览器
  • PyQt实战——使用python提取JSON数据(十)
  • 树形查询转成TreeNode[],添加新节点
  • MongoDB 管理工具
  • C# 使用Newtonsoft.Json
  • 数据库的创建使用与查找
  • 【集合】——LinkedList
  • 机器算法之逻辑回归(Logistic Regression)详解
  • 【Leetcode 热题 100】208. 实现 Trie (前缀树)
  • LeetCode 876:链表的中间节点
  • 典型常见的基于知识蒸馏的目标检测方法总结三
  • Langchain Chat Model 和 Chat Prompt Template
  • 【Axios】如何在Vue中使用Axios请求拦截器
  • Flutter DragTarget拖拽控件详解
  • Effective C++ 条款30:透彻了解 inlining 的里里外外
  • vue 中 ref 详解
  • 移动机器人推动制造业向自动化转升级
  • 数据仓库和数据湖 数据仓库和数据库
  • AI写标书工具:高效智能的标书撰写助手——标小兔