一、题目
函数原型:
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
相关推荐
波波侠83 分钟前
代码随想录算法训练营打卡第31天|56. 合并区间、738.单调递增的数字Snow_day.4 分钟前
有关线段树应用(1)m0_5613596712 分钟前
C++模块接口设计难得的我们41 分钟前
单元测试在C++项目中的实践Once_day42 分钟前
代码训练总结(1)算法和数据结构的框架思维鹿角片ljp1 小时前
力扣125.验证回文串-双指针We་ct1 小时前
LeetCode 30. 串联所有单词的子串:从暴力到高效,滑动窗口优化详解-Try hard-1 小时前
数据结构|概念及单向有头链表历程里程碑1 小时前
子串----和为K的子数组Aaron15881 小时前
通信灵敏度计算与雷达灵敏度计算对比分析