news 2026/7/22 9:16:45

day133—快慢指针—链表的中间结点(LeetCode-876)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
day133—快慢指针—链表的中间结点(LeetCode-876)

题目描述

给你单链表的头结点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 ,返回第二个结点。

提示:

  • 链表的结点数范围是[1, 100]
  • 1 <= Node.val <= 100

解决方案:

这段代码的核心功能是找到单链表的中间节点(若链表节点数为偶数,返回第二个中间节点;奇数则返回正中间节点),采用「快慢指针(龟兔赛跑)」的经典方法实现,时间复杂度O(n)、空间复杂度O(1),是找链表中间节点的最优解法。

核心逻辑

代码利用快慢指针的步长差异,让快指针走得更快,当快指针到达链表末尾时,慢指针恰好停在中间位置:

  1. 指针初始化:慢指针low和快指针fast都从链表头节点head出发;
  2. 快慢遍历:循环条件为fast不为空且fast->next不为空(保证快指针能走两步):
    • 慢指针low每次走 1 步(low = low->next);
    • 快指针fast每次走 2 步(fast = fast->next->next);
  3. 返回结果:循环结束时,快指针已走到链表末尾(或超出末尾),慢指针恰好指向链表的中间节点,直接返回low即可。

总结

  1. 核心思路:快慢指针步长比 1:2,利用步长差让慢指针 “天然” 停在中间位置,无需统计链表长度;
  2. 关键细节:循环条件fast && fast->next避免快指针访问空指针的next导致崩溃;
  3. 结果特性:偶数节点返回第二个中间节点(如 1→2→3→4 返回 3),奇数节点返回正中间(如 1→2→3 返回 2),符合常规题目要求。

函数源码:

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* middleNode(ListNode* head) { ListNode* low=head; ListNode* fast=head; while(fast && fast->next){ low=low->next; fast=fast->next->next; } return low; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/20 16:44:38

基于SpringBoot的办公管理系统设计与实现

背景分析现代企业办公场景中&#xff0c;传统纸质化或分散式管理方式存在效率低、数据孤岛、协同困难等问题。随着数字化转型加速&#xff0c;企业对高效、集成化办公管理的需求日益增长。SpringBoot作为轻量级Java框架&#xff0c;具备快速开发、微服务支持等特性&#xff0c;…

作者头像 李华
网站建设 2026/7/21 23:12:57

基于springBoot的小区健身房管理系统设计与实现

背景分析随着城市化进程加速&#xff0c;居民健康意识提升&#xff0c;社区健身房成为基础配套设施需求。传统健身房管理依赖人工登记、纸质记录&#xff0c;存在效率低、数据易丢失、会员体验差等问题。SpringBoot框架因其快速开发、微服务支持等特性&#xff0c;为构建智能化…

作者头像 李华
网站建设 2026/7/22 1:05:18

先知AI如何破解男装行业的数据迷局?

在数字化浪潮席卷之下&#xff0c;男装行业正面临前所未有的挑战与机遇。库存积压、设计同质化、消费者需求难以精准捕捉&#xff0c;成为许多企业增长的绊脚石。北京先智先行科技有限公司敏锐洞察到这一痛点&#xff0c;凭借其深厚的行业积累与人工智能技术&#xff0c;推出了…

作者头像 李华
网站建设 2026/7/20 10:42:34

多变量单步时序预测 | TCN-LSTM时序卷积网络长短期记忆网络时间序列预测MATLAB代码

一、研究背景 本代码实现了一种TCN-LSTM混合神经网络模型,用于时间序列预测任务。TCN(时序卷积网络)具有并行计算能力强、感受野可控的优点,LSTM(长短期记忆网络)则擅长捕捉长期依赖关系。两者结合旨在提升时间序列预测的精度与稳定性。 二、主要功能 从Excel文件中读取…

作者头像 李华
网站建设 2026/7/21 19:59:48

多变量单步时序预测 | TCN-BiLSTM时序卷积网络双向长短期记忆网络时间序列预测MATLAB代码

一、研究背景 该代码实现了一种 TCN-BiLSTM 混合神经网络模型,用于时间序列预测任务。TCN(时序卷积网络)能够有效提取局部时序特征并控制感受野,而双向LSTM(BiLSTM) 则能同时利用过去与未来的信息,增强序列建模的双向依赖关系,尤其适用于具有前后文依赖的时间序列预测…

作者头像 李华
网站建设 2026/7/1 7:41:10

互联网核心系统架构白皮书:从 MySQL 到千万 QPS 的全链路工程体系

流量工程 缓存体系 写削峰 CQRS 异构存储 事件驱动 金融级稳定性设计 一、什么才是真正的“千万 QPS”? 先给出一个行业级结论: 千万 QPS 从来不是 MySQL 的能力,而是整个系统工程能力。 MySQL 在真正的千万 QPS 架构中,只承担 0.1%~1% 的请求量。 真实系统 QPS 分担…

作者头像 李华