一、题目
函数原型:
bool hasCycle(struct ListNode *head)
二、算法判断不是环形链表,只需遍历链表找到空结点即可。
判断是环形链表,由于链表是环形的,遍历不会永远不会结束。所以要设置快慢指针,慢指针一次走一步,快指针一次走两步。当两个指针都进入环时,快指针走地比慢指针快,因此快指针总会遇到慢指针。因此,判断是环形链表的条件是慢指针等于快指针。
三、代码
cppbool hasCycle(struct ListNode *head) { struct ListNode *fast=head; struct ListNode *slow=head; while(fast&&fast->next) { fast=fast->next->next; slow=slow->next; if(fast==slow) return true; } return false; }
leetcode:141. 环形链表
南林yan2023-11-08 20:02
相关推荐
初级炼丹师(爱说实话版)1 天前
多进程与多线程的优缺点及适用场景总结hetao17338371 天前
2025-11-25~26 hetao1733837的刷题记录历程里程碑1 天前
各种排序法大全树在风中摇曳1 天前
带哨兵位的双向循环链表详解(含 C 代码)+ LeetCode138 深度解析 + 顺序表 vs 链表缓存机制对比(图解 CPU 层级)少许极端1 天前
算法奇妙屋(十四)-简单多状态dp问题文涛是个小白呀1 天前
Java集合大调研2301_823438021 天前
解析论文《复杂海上救援环境中无人机群的双阶段协作路径规划与任务分配》embrace991 天前
【C语言学习】结构体详解Ayanami_Reii1 天前
基础数学算法-开关问题稚辉君.MCA_P8_Java1 天前
通义 Go 语言实现的插入排序(Insertion Sort)