环形链表II
- 首先判断是否存在环(slow走一步,fast走两步,若有环,两者必定在环中相遇)
- 再判断进入环的位置(index1和index2分别从头结点和相遇节点出发,都各走一步,当两者相遇时即为入环位置)
#双指针法
#首先判断是否存在环
fast = slow = head
pos = -1
while fast:
fast = fast.next
if fast:
fast = fast.next
slow = slow.next
if slow == fast and fast:
pos = 0
break
if pos == -1:
return None
#再判断进入环的位置
index1 = head
index2 = fast
while index1 != index2:
index1 = index1.next
index2 = index2.next
return index1
参考:https://programmercarl.com/0142.%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8II.html#思路