# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # # @param head ListNode类 # @return bool布尔型 # class Solution: def hasCycle(self , head: ListNode) : fast=head #定义快慢指针 slow=head while fast!=None and fast.next!=None: #因为快指针一次要跑两步,因此至少它初始位置和第一步不能为空 fast=fast.next.next #快指针跑两步,慢指针跑一步 slow=slow.next if fast==slow: #如果他们相遇说明存在环,你出去跑步过就会知道,假设速度一直不变,如果跑直线,速度慢的人是永远追不上速度快的人,但如果是跑圈的话,速度快的人就会超过速度慢的人,他们会在这个时刻相遇,这也就证明了环的存在 return True return False