# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def hasCycle(self, head: Optional[ListNode]) -> bool:
if not head or not head.next: # 如果链表为空或只有一个节点,则肯定没有环
return False
slow = head # 慢指针从头节点开始
fast = head.next # 快指针从头节点的下一个节点开始
while slow != fast: # 当快指针追赶上慢指针时表示相遇
if not fast or not fast.next: # 如果快指针到达链表末尾,则表示没有环
return False
slow = slow.next # 慢指针每次向后移动一步
fast = fast.next.next # 快指针每次向后移动两步
return True # 如果能跳出循环,说明有环,返回True
12-09
234
12-25
458
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交