题目描述:
思路:
有点复杂
看大佬的视频:
代码如下:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def detectCycle(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
fast=head
slow=head
while (fast!=None and fast.next!=None):
fast=fast.next.next # 以2倍速
slow=slow.next # 以1倍速
if slow==fast: # 快慢指针相遇,此时从head 和 相遇点,同时查找直至相遇
index1=fast # 相遇位置
index2=head # 头结点
while(index1!=index2):
index1=index1.next
index2=index2.next
return index2 # 返回环的入口
return None