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

【Java 数据结构】链表的中间结点

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

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

题目出处:876. 链表的中间结点 - 力扣(LeetCode)

1. 题目

给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

示例 1:

输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。

示例 2:

输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

2. 解析

2.1 普通方法

  • 可以看到只需要头指针向后走整个链表的一半长度即可找到目标节点

2.2 快慢节点方法

  •  定义两个节点,快节点(fast),慢节点(slow),快节点一次运动两次,慢节点一次运动一次,当快节点到头后,慢节点就是中间节点
  • 原理:路程一样,速度 2 倍,一个运动完,另一个在中间

3. 代码实现

 3.1 普通方法

class Solution {
    public ListNode middleNode(ListNode head) {
        if (head == null) return null;
        ListNode ret = head;
        int count = 0;
        while (ret != null) {
            count++;
            ret = ret.next;
        }
        count /= 2;
        ret = head;
        while (count != 0) {
            ret = ret.next;
            count--;
        }
        return ret;
    }
}

 3.2 快慢节点方法

class Solution {
    public ListNode middleNode(ListNode head) {
        if (head == null) return null;
        ListNode fast = head;
        ListNode slow = head;
        while (fast != null || fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
        }
        return slow;
    }
}

4. 小结

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


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

相关文章:

  • 面试经典 150 题——数组/字符串(一)
  • 国标GB28181-2022平台EasyGBS:安防监控中P2P的穿透方法
  • 云计算时代携程的网络架构变迁
  • C#控件开发3—文本显示、文本设值
  • 如何阻止盗版软件在互联网上传播
  • 使用驱动器光盘需格式化:深度解析与数据恢复全攻略
  • 【华为OD-E卷-租车骑绿道 100分(python、java、c++、js、c)】
  • C++ 最小栈 - 力扣(LeetCode)
  • 杂项记录一些笔记
  • linux服务器上CentOS的yum和Ubuntu包管理工具apt区别与使用实战
  • AIOps平台的功能对比:如何选择适合的解决方案?
  • 简单贪吃蛇小游戏的设计与实现
  • es创建的索引状态一直是red
  • Effective C++ 条款 09:绝不在构造和析构过程中调用 virtual 函数
  • python操作Elasticsearch执行增删改查
  • 十二月第23讲:.NET 9 New features-AOT相关的改进
  • ubuntu搭建redis cluster集群三主三从(从0搭建,小白也会,不啰嗦)
  • (十)Ubuntu 20.04+akiaaa大神 Stable Diffusion整合包 AI绘画教程-外挂VAE模型等快捷设置教程
  • HarmonyOS NEXT 实战之元服务:静态案例效果---电动车电池健康状况
  • DPO(Direct Preference Optimization)算法解释:中英双语
  • 嵌入式学习-QT-Day11
  • .NET Core 中使用 C# 获取Windows 和 Linux 环境兼容路径合并
  • springcloud依赖
  • MongoDB 创建用户、User、Role 相关 操作
  • 机器学习基础算法 (二)-逻辑回归
  • 【LeetCode 面试经典150题】详细题解之哈希表篇