# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def EntryNodeOfLoop(self, pHead):
        fast=pHead
        slow=pHead
        while fast and fast.next:
            fast=fast.next.next
            slow=slow.next
            if fast==slow:   #从这之前的代码主要证明是否存在环,若存在,fast目前所在位置就是两个指针相遇的位置
                slow=pHead #此时慢指针回到初始位置出发,快指针从相遇位置出发,他们以相同的速度出发,他们相遇点就是环入口
                while fast!=slow and fast and fast.next:
                    slow=slow.next
                    fast=fast.next
                return slow