给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 none.
思路:使用快慢指针,先判断是否有环,若有慢指针重回起点,各走一步,重合点为入环点.
class Node:
def __init__(self,data):
self.data = data
self.next = None
def __repr__(self):
return f"Node({self.data})"
class Solution:
def detectCircle(self,head):
fast = head
slow = head
while fast and fast.next is not None:
slow = slow.next
fast = fast.next.next
if fast == slow:
slow = head
while slow != fast:
slow = slow.next
fast = fast.next
return slow
return None