☰
leetcode141.环形链表1
2026/10/28 2:02:23 网站建设 项目流程

141.环形链表

题目描述

给你一个链表的头节点head,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos 来表示链表尾连接到链表中的位置(索引从0开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。

如果链表中存在环,则返回true。否则,返回false。

示例1


输入:
head = [3,2,0,-4], pos = 1
输出:
true
解释:
链表中有一个环,其尾部连接到第二个节点。
示例2


输入:
head = [1,2], pos = 0
输出:
true
解释:
链表中有一个环,其尾部连接到第一个节点。
示例3


输入:
head = [1], pos = -1
输出:
false
解释:
链表中没有环。
提示:
• 链表中节点的数目范围是 [0, 104]
• -105 <= Node.val <= 105
• pos 为 -1 或者链表中的一个 有效索引 。

题目详解

上一道题目是求中间节点,我们使用slow和fast求解,这道题解法是类似的
由于slow每次走一步错,fast走2步。相对速度是2步,那如果存在环形的话,fast和slow必定会相遇

完整代码

# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = NoneclassSolution:defhasCycle(self,head:Optional[ListNode])->bool:slow=head fast=headwhilefastandfast.next:slow=slow.nextfast=fast.next.nextiffastisslow:# 有环形一定会相遇returnTruereturnFalse# 时间复杂度O(n),空间复杂度O(1)

同类型题目leetcode142是输入环形的入口,具体解法见下一篇,后续会陆续出leetcode的题目解题过程,喜欢的小宝可以点赞收藏关注喔

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询