给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null 。不允许修改链表。
和环形链表 I 一样的思路。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None
classSolution: defdetectCycle(self, head: Optional[ListNode]) -> Optional[ListNode]: seen = set() while head isnotNone: if head in seen: return head seen.add(head) head = head.next returnNone