一、题目
函数原型:
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
相关推荐
csdn_aspnet2 小时前
C语言 Lomuto分区算法(Lomuto Partition Algorithm)谙弆悕博士2 小时前
【附C源码】从零实现C语言堆数据结构:原理、实现与应用gaosushexiangji5 小时前
DIC系统推荐:基于千眼狼三维数字图像相关的无人机旋翼疲劳试验全场应变与位移测量小王C语言7 小时前
【线程概念与控制】:线程封装圣保罗的大教堂7 小时前
leetcode 796. 旋转字符串 简单kyle~7 小时前
工程数学---点云配准卡布施(Kabsch)算法(求解最优旋转矩阵)张二娃同学7 小时前
03_变量常量与输入输出_printf与scanf详解Zhang~Ling8 小时前
深入解析C++list:从0到1实现一个完整的链表类江南十四行8 小时前
并发编程(一)z200509308 小时前
今日算法(依旧二叉树)