一、题目
函数原型:
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
相关推荐
yuanyuan2o25 分钟前
Transformers NLP 任务:阅读理解问答菜菜的顾清寒16 分钟前
力扣HOT100(52)动态规划 - 最长递增子序列WBluuue22 分钟前
数据结构与算法:树上启发式合并x_xbx39 分钟前
LeetCode:20. 有效的括号计算机安禾39 分钟前
【算法设计与分析】第40篇:空间数据结构:KD树与四叉树的查询分析江屿风1 小时前
C++图的两种构建算法流食般投喂-竞赛编m沐沐1 小时前
【机器学习】信用卡欺诈检测实战:逻辑回归 + 过采样代码中介商1 小时前
图论入门:从基础到遍历算法csdn_aspnet1 小时前
Python 霍尔分区算法(Hoare‘s Partition Algorithm)8Qi81 小时前
LeetCode 295:数据流的中位数(Median Finder)—— Java 题解 ✅