一、题目
函数原型:
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
相关推荐
wabs6662 分钟前
关于二叉树【力扣116.填充每个节点的下一个右侧节点指针的思考】Nil20816 分钟前
leetcode 74搜索二维矩阵新知图书23 分钟前
第 14 章 后训练算法GRPO详解与实战shirsl2 小时前
算法 Day1-数组 / 哈希 + 双指针2601_9677607810 小时前
2026年PDF压缩与页码添加工具技术实测:性能、算法与本地化适配深度对比不会就选b10 小时前
算法日常・每日刷题--<贪心>7moonrailgun11 小时前
用 Node.js 复刻 Codex Astra 的终端星光罗西的思考11 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 ---(1)--- 总体lvwangshu12 小时前
图论:LCA、树的直径、树的重心、二分图与 Tarjan 缩点302wanger13 小时前
干与湿:AI 拿走脑力之后,人剩下什么