当前位置: 首页 > news >正文

环形链表(LeetCode 141)C语言最佳解题思路

环形链表(LeetCode 141)C语言解题思路

问题描述

判断一个链表中是否存在环。

解题方法:快慢指针法

使用两个指针,一个快指针(每次移动两步),一个慢指针(每次移动一步)。如果链表中存在环,快指针最终会追上慢指针;如果不存在环,快指针会先到达链表尾部。

代码实现
#include <stdbool.h> // 链表节点结构体定义(题目自带) struct ListNode { int val; struct ListNode *next; }; // 主函数:判断链表是否有环 bool hasCycle(struct ListNode *head) { // 边界1:空链表 / 只有单个节点无后继,直接无环 if (head == NULL || head->next == NULL) { return false; } // 初始化快慢指针,起点都为头节点 struct ListNode *slow = head; struct ListNode *fast = head; // 循环条件:fast和fast->next不能为NULL(fast一次走两步,防止空指针访问) while (fast != NULL && fast->next != NULL) { slow = slow->next; // 慢:走1步 fast = fast->next->next; // 快:走2步 // 快慢指针相遇,证明存在环 if (slow == fast) { return true; } } // 循环正常退出说明fast走到链表末尾NULL,无环 return false; }
代码讲解
  1. 边界条件检查

    • 如果链表为空(head == NULL)或只有一个结点(head->next == NULL),直接返回false,因为无法形成环。
  2. 初始化指针

    • slow指针初始化为head,每次移动一步。
    • fast指针初始化为head->next,每次移动两步。
  3. 循环检测

    • while循环中,判断slowfast是否相遇。
    • 如果fastfast->nextNULL,说明链表无环,返回false
    • 每次循环中,slow移动一步,fast移动两步。
  4. 返回结果

    • 如果slowfast相遇,说明链表有环,返回true
复杂度分析
  • 时间复杂度:O(n)
    • 无环时,快指针最多遍历链表一次。
    • 有环时,快慢指针会在环内相遇,时间复杂度为O(n)。
  • 空间复杂度:O(1)
    • 仅使用了两个指针,空间复杂度为常数。
http://www.jsqmd.com/news/1113479/

相关文章:

  • AI岗位替代不是失业倒计时,而是能力重构日程表
  • 佳易王计时计费软件|会员卡类型设置详细教程(SaaS云端版)
  • 点】[Bricks节点]原理解析与实际应用
  • TVA在具身智能技术演进中的独特价值(5)
  • CNAS软件测试体系中,数值修约标准的应用
  • 手动推导反向传播:彻底搞懂神经网络训练的核心黑魔法
  • 展厅设计公司哪个品牌口碑好?汉诺会展领衔国内优质展厅公司价格、效果、性价比分析
  • 计算机Java毕设实战-基于 SpringBoot 的企业人事信息与薪资绩效分析系统的设计与实现 基于 SpringBoot 的员工档案合同运维【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • ML模型服务化实战:从Notebook到高稳生产环境
  • 【Java毕业设计】基于 SpringBoot 的企业员工薪酬绩效统计分析系统的设计与实现 基于 SpringBoot 的一体化员工人事薪资合同管理系统(源码+文档+远程调试,全bao定制等)
  • Python图片处理:基于Gradio构建启动后在浏览器打开交互界面,支持上传图片、自由拖拽4个顶点实现任意角度拉伸压缩、并添加文字
  • 《对称性共生关系论——凌微经》第3~5章从逻辑归宗至形性一体助读篇
  • 【计算机Java毕业设计案例】基于 SpringBoot 的考勤数据可视化分析系统的设计与实现 基于 SpringBoot 的企业员工签到签退监管系统(程序+文档+讲解+定制)
  • SQL注入攻防体系构建:从原理到实战的全面指南
  • Xshell中实际操作命令
  • 智能体总是不听话?90% 的人没用对 Hermes 的「上下文」——这才是正确的打开方式
  • LIME与SHAP实战指南:金融风控中可解释AI的工程落地
  • 3分钟掌握:抖音无水印批量下载工具的终极解决方案
  • 知识蒸馏:SFT、RL、GKD等核心区别解析
  • 3个关键维度解析open-cmdb:从数据孤岛到智能资产管理的技术演进
  • 电脑加密软件有哪些?6 款热门电脑加密软件精选推荐,2026 电脑防泄密指南
  • 艺术涂料刷涂工艺?一次说到位
  • AI落地漏斗:从POC到规模化ROI的工程化实践指南
  • 未来国际物联网卡的发展趋势是什么?跨境IoT通信产业迭代解析
  • 电驱蚊器有毒吗?最先进的灭蚊神器是什么牌子?十款质量不错灭蚊器榜单对比实测! 避坑贴!
  • OpenClaw AI代理工具:从部署到QQ联动的完整指南
  • 处理医疗废水要安装在线监测设备吗?
  • Autoware与Apollo开源自动驾驶平台核心对比
  • 2026矩阵式协作的隐性语义差:为什么开再多例会也对不齐原始意图
  • Android逆向实战:动态调试破解APK加密逻辑与IDA、Frida工具链详解