Linked List Cycle
Easy
Hash Table
Linked List
Two Pointers
Given `head`, the head of a linked list, determine if the linked list has a cycle in it. There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the `next` pointer. Internally, `pos` is used to denote the index of the node that the tail's `next` pointer is connected to. **Note that** `pos` *is not passed as a parameter*. Return `true` *if there is a cycle in the linked list*. Otherwise, return `false`.
Example 1
Input: head = [3,2,0,-4], pos = 1
Output: true
Explanation: There is a cycle, 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, 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 nodes in the list is in the range [0, 10⁴].
  • -10⁵ <= Node.val <= 10⁵
  • pos is -1 or a valid index in the linked-list.
Time Complexity
O(n)
Space Complexity
O(1)
14
Case 1
Input: [3,2,0,-4] 1
Expected: true
Case 2
Input: [1,2] 0
Expected: true
Case 3
Input: [1] -1
Expected: false