--- title: '141. Linked List Cycle' description: Given head, the head of a linked list, determine if the linked list has a cycle in it sidebar: label: 'Linked List Cycle' badge: 'Easy' --- Linked List ::::warning Can you solve it using O(1) (i.e. constant) memory? :::: ### Example 1: - Input: `head = [3,2,0,-4], pos = 1` - Output: `true` - Explanation: There is a cycle in the linked list, where the tail connects to the 1st node (0-indexed). ### Example 2: - Input: `head = [1,2], pos = 0` - Output: `true` - Explanation: There is a cycle in the linked list, where the tail connects to the 0th node. ### Example 3: - Input: `head = [1], pos = -1` - Output: `false` - Explanation: There is no cycle in the linked list. ### Constraints: - The number of the nodes in the list is in the range [0, 10^4]. - `-10^5 <= Node.val <= 10^5` - pos is -1 or a valid index in the linked-list. ## Solution ```py # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def hasCycle(self, head: Optional[ListNode]) -> bool: fast = slow = head while fast and fast.next: fast = fast.next.next slow = slow.next if fast is slow: return True return False ```