一、题目
函数原型:
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
相关推荐
贾斯汀玛尔斯3 小时前
每天学一个算法--LSM-Tree(Log-Structured Merge Tree)浅念-7 小时前
刷穿LeetCode:BFS 解决 Flood Fill 算法做cv的小昊8 小时前
【TJU】研究生应用统计学课程笔记(8)——第四章 线性模型(4.1 一元线性回归分析)贾斯汀玛尔斯8 小时前
每天学一个算法--倒排索引(Inverted Index)小e说说8 小时前
打破偏科困境:这些学习软件助孩子重燃学习热情月昤昽9 小时前
autoCAD二次开发 4.正多边形与collection区分休息一下接着来9 小时前
C++ 固定容量环形队列实现im_AMBER10 小时前
手撕hot100之矩阵!看完这篇就AC~笨笨饿10 小时前
#79_NOP()嵌入式C语言中内联汇编宏的抽象封装模式研究