Linked List Cycle
Question
Given a linked list, determine if it has a cycle in it.
To represent a cycle in the given linked list, we use an integer
pos
which represents the position (0-indexed) in the linked list where tail connects to. Ifpos
is-1
, then there is no cycle in the linked list.
Example 1: Input: head = [3,2,0,-4], pos = 1 Output: true Explanation: There is a cycle in the linked list, where tail connects to the second node.
Example 2: Input: head = [1,2], pos = 0 Output: true Explanation: There is a cycle in the linked list, where tail connects to the first node.
Example 3:
Input: head = [1], pos = -1 Output: false Explanation: There is no cycle in the linked list.
Approach 1: Hash Table
This problem is similar to Q21, because they both require traverse a
linked list. In fact, the key point is to set out=mid=head
.
out
is used in the iterations and
mid
Intuition
To detect if a list is cyclic, we can check whether a node had been visited before. A natural way is to use a hash table. is used as an output.
1 | # Definition for singly-linked list. |
Complexity Analysis
- Runtime: 32 ms, faster than 99.15% of Python online submissions forLinked List Cycle.
- Memory Usage: 19 MB, less than 7.37% of Python online submissions forLinked List Cycle.