算法:判断链表是否有环

server/2025/3/3 23:52:55/
/*** @brief 判断链表是否有环* * 该函数使用快慢指针法来判断链表中是否存在环。* 快指针每次移动两步,慢指针每次移动一步。* 如果链表中存在环,那么快指针最终会追上慢指针;* 如果链表中不存在环,快指针会先到达链表末尾。* * @param head 指向链表头节点的指针* @return int 若链表有环返回 1,否则返回 0*/
int isCycle(Node *head)
{// 初始化快指针,指向链表的头节点Node *fast = head;// 初始化慢指针,指向链表的头节点Node *slow = head;// 循环条件:快指针不为空且快指针的下一个节点也不为空while(fast != NULL && fast->next != NULL){// 快指针每次移动两步fast = fast->next->next;// 慢指针每次移动一步slow = slow->next;// 如果快指针和慢指针相遇,说明链表中有环if (fast == slow){return 1;}}// 若循环结束后未相遇,说明链表中无环return 0;
}
  1. 快慢指针步长比例分析

    • 快指针走两步、慢指针走一步的原理
      • 假设链表存在环,环的长度为nn。设慢指针进入环时,快指针与慢指针的距离为mm(0⩽m<n0⩽m<n)。
      • 因为快指针每次比慢指针多走一步,所以每一轮循环,快指针与慢指针的距离会减少11。
      • 最终,经过mm轮循环后,快指针和慢指针必然会相遇。
    • 其他可能的步长比例
      • 例如,快指针走三步,慢指针走一步。
      • 但是这种情况下会有一些特殊情况需要考虑。假设环的长度nn和初始距离mm存在某些特定关系时,可能会出现快指针“跳过”慢指针而不相遇的情况。
      • 例如,当环长n=4n=4,初始距离m=2m=2时,快指针走三步,慢指针走一步,可能会出现快指针和慢指针一直无法相遇的情况。
    • 快指针走两步、慢指针走一步的优势
      • 这种步长比例简单且能稳定地判断链表是否有环,不会出现特殊情况导致判断错误。所以在实际应用中被广泛使用。

http://www.ppmy.cn/server/172193.html

相关文章

技术问题汇总:前端怎么往后端传一个日期?

场景 现在有一个笔记软件&#xff0c;需要根据用户设置的两个日期&#xff0c;删选出来创建日期位于这两个日期中间的笔记。 思路 把日期放到一个对象里边传到后端 参考代码 前端代码&#xff0c;提交一个含日期的对象。 <template><div class"demo-date-p…

什么是RPC,和HTTP有什么区别?

RPC是Remote ProcedureCall的缩写&#xff0c;译为远程过程调用。要想实现RPC通常需要包含传输协议和席列化协议的实现。 而我们熟知的HTTP&#xff0c;他的中文名叫超文本传输协议&#xff0c;所以他就是一种传输协议。所以&#xff0c;我们可以认为RPC和HTTP并不是同一个维度…

机器学习三大基石:监督学习、无监督学习与强化学习实用指南

引言 在人工智能的浪潮中,机器学习无疑是最核心的技术之一。它赋予计算机从数据中学习的能力,从而在各个领域展现出强大的应用潜力。从智能助手到自动驾驶,从精准医疗到金融风控,机器学习的身影无处不在,深刻地改变着我们的生活和工作方式。 机器学习方法繁多,但从学习…

or-tools编译命令自用备注

cmake .. -G "Visual Studio 17 2022" -A Win32 //vs2022 cmake .. -G "Visual Studio 15 2017" -A Win32 //vs2017 -DBUILD_DEPSON //联网下载 -DCMAKE_INSTALL_PREFIXinstall //带安装命令 -DCMAKE_CXX_FLAGS"/u…

DooTask项目管理软件:ChatGPT、DeepSeek、通义千问与文心一言四大AI机器人的深度比较

文章目录 一、前言二、四大AI机器人的深度比较三、AI工具的优势与应用对比3.1 DeepSeek&#xff1a;数据挖掘与智能搜索的利器3.2 ChatGPT&#xff1a;自然语言处理的强大助手3.3 通义千问&#xff1a;中文语义理解的强力助手3.4 文心一言&#xff1a;跨领域知识生成与应用3.5 …

《白帽子讲 Web 安全:点击劫持》

目录 摘要&#xff1a; 一、点击劫持概述 二、点击劫持的实现示例&#xff1a;诱导用户收藏指定淘宝商品 案例 构建恶意页面&#xff1a; 设置绝对定位和z - index&#xff1a; 控制透明度&#xff1a; 三、其他相关攻击技术 3.1图片覆盖攻击与 XSIO 3.2拖拽劫持与数据…

北斗模块在无人机领域的革新应用与未来展望

随着无人机技术的飞速发展&#xff0c;其在农业、物流、测绘、应急救援等领域的应用日益广泛。然而&#xff0c;无人机的高效运行高度依赖于精准的导航定位、可靠的通信能力和智能化的控制技术。在这一背景下&#xff0c;中国自主研发的北斗卫星导航系统&#xff08;BDS&#x…

计算机毕业设计SpringBoot+Vue.js保险合同管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…