一、题目
函数原型:
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
相关推荐
玖玥拾2 小时前
LeetCode 392 判断子序列重生之后端学习3 小时前
239. 滑动窗口最大值[困难]✅fpcc3 小时前
算法和数据结构—动态规划法星星.7226 小时前
C++算法竞赛|二分查找与二分答案:边界模板、浮点二分、STLsel_96 小时前
【OPD论文导读(二)】OPD(On-Policy Distillation)全景调研:十篇论文讲透“在自己生成的内容上学习“这件事金幄科技7 小时前
RAG第四篇:重排序 Rerank——粗召回之后,为什么还需要一次精排M78佐菲7 小时前
Linux学习笔记:文件IOlhldsg8 小时前
课程排课系统实战指南:从数据库设计到算法调优全流程解析BSD_HY8 小时前
薄膜开关矩阵扫描电路设计中的防鬼键措施linux-hzh8 小时前
百日算法修炼 · Day 17