Floyd 判环算法
下面从算法原理、数学证明、代码实现、变体应用、性能优化、工程实践六个维度,为你全面剖析 Floyd 判环算法(Floyd's Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm)。一、算法概述核心思想Floyd 算法用两个速度不同的指针遍历链表:慢指针(tortoise):每次走 1 步快指针(hare):每次走 2 步如果链表有环,快指针最终会从后面追上慢指针(在环内相遇);如果无环,快指针会先到达null。为什么叫龟兔赛跑?text想象一个环形跑道: - 乌龟(慢指针)每次走 1 步 - 兔子(快指针)每次走 2 步 - 在环形跑道上,兔子一定会从后面追上乌龟 - 在直线跑道上,兔子会先到达终点二、算法原理与数学证明1. 第一阶段:检测是否有环text设: - 链表头到环入口距离 = a - 环入口到相遇点距离 = b - 环的周长 = c - 慢指针走的步数 = s - 快指针走的步数 = f = 2s(因为速度是 2 倍) 相遇时: - 慢指针在环内走了 b 步,s = a + b - 快指针比慢指针多走了 k 圈(k ≥ 1) f - s = k × c 2s - s = s = k × c 因此:a + b = k × c2. 第二阶段:找环入口(关键证明)text从上面的公式:a + b = k × c 推导:a = k × c - b 这意味着: - 从链表头走 a 步 → 到达环入口 - 从相遇点走 a 步 → 绕环 k 圈后回到环入口 因此:让两个指针分别从头和相遇点同时前进(每次 1 步), 它们会在环入口相遇!3. 图示说明texta b 头 ────→ ● ──────────→ ● ← 相遇点 ↑ │ │ │ └──────────────┘ (环周长 c) 从头到入口:a 步 从入口到相遇点:b 步 从相遇点回到入口:c - b 步 a = k×c - b → 从头走 a 步 = 从相遇点走 a 步(即 c-b + (k-1)×c)三、代码实现1. 基础版本:检测是否有环javapublic class FloydCycleDetection { /** * 检测链表是否有环 * @return true 有环,false 无环 */ public boolean hasCycle(ListNode head) { if (head == null || head.next == null) { return false; } ListNode slow = head; ListNode fast = head; while (fast != null fast.next != null) { slow = slow.next; // 走 1 步 fast = fast.next.next; // 走 2 步 if (slow == fast) { return true; // 相遇,有环 } } return false; // 快指针到达 null,无环 } }2. 完整版本:找环入口java/** * 检测环并返回环入口节点 * @return 环入口节点(无环返回 null) */ public ListNode detectCycle(ListNode head) { if (head == null || head.next == null) { return null; } ListNode slow = head; ListNode fast = head; // 第一阶段:检测是否有环 while (fast != null fast.next != null) { slow = slow.next; fast = fast.next.next; if (slow == fast) { // 第二阶段:找环入口 ListNode ptr = head; while (ptr != slow) { ptr = ptr.next; slow = slow.next; } return ptr; // 环入口 } } return null; // 无环 }3. 计算环的长度java/** * 计算环的长度 */ public int cycleLength(ListNode head) { if (head == null || head.next == null) { return 0; }

相关新闻

差分进化算法原理与Python实现:优化复杂工程问题的全局搜索利器

差分进化算法原理与Python实现:优化复杂工程问题的全局搜索利器

1. 项目概述最近在优化一个工程参数调优的问题,试了一圈传统的梯度下降和遗传算法,效果总是不太理想,要么容易卡在局部最优解,要么收敛速度慢得让人着急。后来在文献里翻到了差分进化算法(Differential Evolution, DE&…

2026/8/1 2:03:33 阅读更多 →
Iced容器技术:Rust轻量化跨平台GUI开发实践

Iced容器技术:Rust轻量化跨平台GUI开发实践

1. Iced容器技术解析:轻量化与跨平台GUI开发新思路最近在开发一个需要跨平台部署的桌面应用时,偶然发现了Iced这个基于Rust语言的GUI框架。它提出的"容器"概念让我眼前一亮——不同于传统GUI框架的臃肿架构,Iced通过极简的容器模型…

2026/8/1 2:02:33 阅读更多 →
金蝶ERP与AI智能助手集成开发实战:从自然语言处理到业务自动化

金蝶ERP与AI智能助手集成开发实战:从自然语言处理到业务自动化

最近在技术社区里,不少开发者都在讨论一个有趣的现象:当传统的企业管理软件遇上新兴的AI技术,会碰撞出怎样的火花?"金蝶为引,魔女降临"这个标题背后,实际上反映的是企业级应用智能化转型的一个典…

2026/8/1 2:02:33 阅读更多 →

最新新闻

HarmonyOS ArkTS 的新手练手样例:用 List 和 ForEach 做一个待办列表

HarmonyOS ArkTS 的新手练手样例:用 List 和 ForEach 做一个待办列表

开头 很多应用都绕不开列表:消息列表、商品列表、设置项、文章列表、任务列表。ArkTS 里可以用 List 和 ListItem 展示列表,用 ForEach 根据数组生成重复界面。 这一篇我们做一个待办列表:输入任务,点击添加,下面列表自…

2026/8/1 2:40:46 阅读更多 →
Ubuntu 26.04(GNOME + Wayland)重启键盘消失问题

Ubuntu 26.04(GNOME + Wayland)重启键盘消失问题

解决办法 1. 切换系统输入法框架为 fcitx5 bash im-config -n fcitx5弹出窗口确认选择 fcitx5。 2. 创建 fcitx5 开机自启(重点!启动的是 fcitx5,不是 configtool) bash mkdir -p ~/.config/autostart nano ~/.config/autos…

2026/8/1 2:40:46 阅读更多 →
综合实验搭建论坛

综合实验搭建论坛

1,安装需要的服务dnf install httpd mariadb php php-mysqli -y2,将Discus放在指定目录 并将它解压 并且修改以下文件权限unzip ... mv .. /var/www/html chmod 777 /upload/data /upload/config、3,浏览器访问 192.168.147.128/upload 如遇…

2026/8/1 2:40:46 阅读更多 →
A2A 协议实战:从 Agent Card 到跨系统多智能体协作(MCP 之外的下一站)

A2A 协议实战:从 Agent Card 到跨系统多智能体协作(MCP 之外的下一站)

A2A 协议实战:从 Agent Card 到跨系统多智能体协作(MCP 之外的下一站)2026 年被称为"智能体爆发年"。麦肯锡《2026 企业级 AI 代理经济报告》显示,采用多智能体协作架构的系统,任务完成率较单体 Agent 提升 …

2026/8/1 2:40:46 阅读更多 →
终极指南:在Blender中完美导入导出3MF文件的完整解决方案

终极指南:在Blender中完美导入导出3MF文件的完整解决方案

终极指南:在Blender中完美导入导出3MF文件的完整解决方案 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否正在寻找一个简单、高效的方法来处理3D打印文…

2026/8/1 2:40:46 阅读更多 →
MCP协议实战:从零构建AI助手扩展服务器的完整指南

MCP协议实战:从零构建AI助手扩展服务器的完整指南

1. 引言:AI助手扩展能力的痛点与解决方案在AI助手日益普及的今天,Claude和ChatGPT已经成为开发者日常工作中不可或缺的智能伙伴。然而,许多开发者在使用过程中发现,这些AI助手虽然功能强大,但在特定领域的专业能力仍有…

2026/8/1 2:39:46 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →