Linked List Cycle
Linked List Cycle is a Easy Data Structures and Algorithms interview problem you can solve, run and submit on Thita.ai. It belongs to the Two Pointers pattern, in the Fast & Slow (Cycle Detection) subpattern.
Problem statement
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 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 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, 104].
- -105 <= Node.val <= 105
- pos is -1 or a valid index in the linked-list.
Follow up: Can you solve it using O(1) (i.e. constant) memory?
Topics and companies
Topics: Hash Table, Linked List, Two Pointers.
Reported in interviews at Microsoft, Apple, Amazon, Goldman Sachs, Facebook, Google.
How to practise Linked List Cycle on Thita.ai
Starter code is provided in C, C#, C++, Go, Java, JavaScript and Python. Your solution runs against 5 test cases for this problem, with the AI coach available for a hint when you are stuck rather than a finished answer. The reference solution runs in O(n), where n is the number of nodes in the linked list. In the worst case, each node is visited at most twice (once by slow, once by fast). time and O(1), as only two pointers (slow and fast) are used regardless of the input size. space.
Open Linked List Cycle in the code editor, or read the Linked List Cycle editorial for a worked solution with its approach and complexity analysis.
Where Linked List Cycle sits in the DSA pattern sheet
- Two Pointers pattern guide
- Fast & Slow (Cycle Detection) subpattern
- The full DSA patterns sheet
- All coding practice problems
Problems related to Linked List Cycle
Other problems that use the same Fast & Slow (Cycle Detection) and Two Pointers techniques:
- Find the Duplicate Number — Medium, same subpattern
- Happy Number — Easy, same subpattern
- Is Subsequence — Easy, same subpattern
- Backspace String Compare — Easy, same pattern
- Boats to Save People — Medium, same pattern
- Container With Most Water — Medium, same pattern