news 2026/4/23 22:40:56

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/23 11:30:10

深入解析 Flutter 跨端开发在扫描全能王移动端应用中的实践:从技术栈到面试准备

上海合合信息科技股份有限公司 Android开发工程师 职位信息 【工作内容】 - 负责扫描全能王移动端跨端的功能模块设计和业务开发 - 可以对其开发的模块进行测试,保证代码的质量 - 对于紧急问题,有责任心且意愿加班快速处理 - 积极主动和需求方沟通,对于需求变更,响应快速 -…

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

AI视频生成1.7.5 |无限AI视频生成,需要特殊网络

AI Video Generator是一款强大的视频生成工具&#xff0c;支持无限量的视频生成。此版本已完全解锁付费功能&#xff0c;去除了所有广告&#xff0c;并支持多种语言。它适用于Arm64-v8a CPU架构&#xff0c;能够为用户提供流畅且高效的创作体验。无论是创意制作还是个人娱乐&am…

作者头像 李华
网站建设 2026/4/23 13:04:13

PasteEx:一款.NET开源的Windows快捷粘贴神器

前言PasteEx是一款.NET开源的用于增强 Windows 粘贴功能的小工具&#xff0c;它解决了将剪贴板内容保存为文件的繁琐步骤。无需打开记事本等应用&#xff0c;它可直接将文字、图片等内容粘贴到桌面上&#xff0c;极大提升了效率。功能特点自定义文本扩展规则&#xff1a;用户可…

作者头像 李华
网站建设 2026/4/23 4:44:19

CSDN博客之星2025年度总评选投票~

欢迎给我投票&#x1f44f; 大家好&#xff0c;我是 Moshow&#xff0c;一名热爱技术与分享的Technical Lead & Engineering Lead & 数据科学探索者 & SpringBoot 专家 。 持有多项权威认证&#xff0c;包括&#xff1a; ️ GCA 谷歌云架构师认证 Neo4j 数据科学…

作者头像 李华