news 2026/4/16 11:29:21

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/4/14 10:31:46

ssm605网上超市购物补货配送系统员工考勤管理系统vue

目录SSM605网上超市购物补货配送系统员工考勤管理系统Vue摘要开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;SSM605网上超市购物补货配送系统员工考勤管理系统Vue摘要 该系统基于SSM&#xff08;SpringSpringMVCMyBatis&#…

作者头像 李华
网站建设 2026/4/7 10:36:35

ssm607宠物用品商城带商家vue上架时间

目录SSM607宠物用品商城系统概述商家管理与商品上架功能技术实现细节核心功能模块数据交互流程扩展功能特性开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;SSM607宠物用品商城系统概述 SSM607宠物用品商城是一个基于SSM&#…

作者头像 李华
网站建设 2026/4/14 16:54:11

GESP认证C++编程真题解析 | P11962 [GESP202503 六级] 树上漫步

​欢迎大家订阅我的专栏&#xff1a;算法题解&#xff1a;C与Python实现&#xff01; 本专栏旨在帮助大家从基础到进阶 &#xff0c;逐步提升编程能力&#xff0c;助力信息学竞赛备战&#xff01; 专栏特色 1.经典算法练习&#xff1a;根据信息学竞赛大纲&#xff0c;精心挑选…

作者头像 李华
网站建设 2026/4/12 8:55:21

Eclipse 重启选项详解

Eclipse 重启选项详解 引言 Eclipse,作为Java开发中广泛使用的集成开发环境(IDE),其稳定性和功能性一直备受开发者青睐。在Eclipse的使用过程中,重启选项是一个常见的操作,它可能涉及到工作空间的恢复、插件的重启等多种场景。本文将详细介绍Eclipse的重启选项及其相关…

作者头像 李华
网站建设 2026/4/11 23:31:14

Python 环境搭建指南

Python 环境搭建指南 引言 Python 是一种广泛应用于数据分析、人工智能、网络开发等领域的编程语言。为了能够有效地使用 Python 进行开发,搭建一个合适的环境是至关重要的。本文将详细介绍如何搭建一个适合 Python 开发的环境,包括安装 Python、配置 IDE、以及一些常用库的…

作者头像 李华
网站建设 2026/4/12 14:51:14

智能垃圾桶、垃圾分类 App、环卫机器人、政策评估系统 YOLOV8模型如何训练生活垃圾分类检测数据集 建立基于深度学习框架YOLOV8垃圾检测系统

垃圾分类检测数据集 垃圾四类检测数据集 14964张 4类 YOLO格式【垃圾四类检测YOLO数据集】共【14964】张&#xff0c;按照8比2划分为训练集和验证集&#xff0c;其中训练集【11971】张&#xff0c;验证集【2993】张&#xff0c;模型分为【4】类&#xff0c;分类为&#xff1a;【…

作者头像 李华