## Solutions ### slow and fast pointers ```python # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def hasCycle(self, head): """ :type head: ListNode :rtype: bool """ slow = fast = head while fast and fast.next: fast = fast.next.next slow = slow.next if fast == slow: return True return False ``` #### Complexity Analysis - Time complexity is On, because we use a while loop - Space complexity is O1, because we only declare 2 pointers