# 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