一、题目
函数原型:
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
相关推荐
aqiu1111113 小时前
【C++算法打怪专栏】8. 字符串转换整数 (atoi)信奥卷王11 小时前
[GESP202609 六级] 分树规划夏幻灵12 小时前
LeetCode 21:合并两个有序链表——双指针与哑节点详解徐小黑ACG13 小时前
Golang 基础05 结构体structNavigator_Z14 小时前
LeetCode //C - 1286. Iterator for Combination北极有牛14 小时前
cpp学习笔记--常量指针GPU实战笔记14 小时前
云端 GPU 训练的账户余额提醒:它能说明什么,不能说明什么?浮链序14 小时前
怎么证明"你这个模型是偷我的"——把蒸馏变成取证工具小O的算法实验室14 小时前
IEEE TMC,面向异构物联网的多目标量子行为拓扑优化算法