问题描述
Given a linked list, determine if it has a cycle in it.
思路
用两个pointer,slow 和 fast
同时出发,slow每次往前一步,fast每次往前两步
如果相遇,说明有loop
否则没有
一定会相遇,因为在slow进入loop的时候,fast已经在loop里面,每次追一步,一定能追上(小学奥数追及问题)
def hasCycle(self, head):
"""
:type head: ListNode
:rtype: bool
"""
slow , fast = head , head
while fast and fast.next:
slow,fast = slow.next,fast.next.next
if slow is fast:
return True
return False
网友评论