本文共 747 字,大约阅读时间需要 2 分钟。
思路比较巧妙,参考剑指offer或者。
# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def detectCycle(self, head): """ :type head: ListNode :rtype: ListNode """ if head == None or head.next == None: return None fp = sp = head # 快指针走两步,慢指针走一步,找到环 while fp and fp.next: sp = sp.next fp = fp.next.next if sp == fp: break if sp == fp: # 让慢指针回到起点,同时快慢指针相遇的时候就是环的入口 sp = head while sp != fp: sp = sp.next fp = fp.next return sp return None