给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null
。
说明:不允许修改给定的链表。
进阶:
你是否可以不用额外空间解决此题?
#快慢指针 如果相遇 快指针回到头节点向前和慢指针一样走一步 它们遇到的节点就是入环节点
class Solution(object):
def detectCycle(self, head):
index1 = head
index2 = head
if not head:
return None
while index1 and index2:
if index1.next:
index1 = index1.next
else:
return None
if index2.next and index2.next:
index2 = index2.next
index2 = index2.next
else:
return None
if index1 == index2:
index1 = head
while index1 != None and index2:
if index1 == index2:
return index1
index1 = index1.next
index2 = index2.next
return None
return None