一、题目
函数原型:
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
相关推荐
谷雨不太卷5 小时前
进程的状态码散峰而望5 小时前
【算法竞赛】C/C++ 的输入输出你真的玩会了吗?躺不平的理查德5 小时前
时间复杂度与空间复杂度备忘录yaki_ya5 小时前
yaki-C语言:从概念基础到内存解析---数组(array)完全指南刃神太酷啦5 小时前
扒透 STL 底层!map/set 如何封装红黑树?迭代器逻辑 + 键值限制全手撕----《Hello C++ Wrold!》(23)--(C/C++)挽星安6 小时前
代码随想录算法训练营第五十天|卡码网 99 岛屿数量、卡码网 100 最大岛屿的面积葫三生6 小时前
《论三生原理》系列构建文理同构的认知体系?多加点辣也没关系7 小时前
数据结构与算法|第六章:队列_深海凉_7 小时前
LeetCode热题100-分割回文串