题目分析见这里
class Solution: # @param head, a ListNode # @return a list node def detectCycle(self, head): if None == head or None == head.next: return None pfast = head pslow = head #找第一次相遇的点,若存在环路,则肯定会相遇 while pfast and pfast.next: pfast = pfast.next.next pslow = pslow.next if pslow == pfast: break if pslow != pfast: return None #pfast从头开始,则下次相遇的点就是循环开始的点 pfast = head while True: if pfast == pslow: return pfast pfast = pfast.next pslow = pslow.next