Detect Cycle in a Linked List
MediumGiven 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.
Examples
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).
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.
Input: head = [1], pos = -1
Output: false
Explanation: There is no cycle in the linked list.
Constraints
- Time complexity matters. Can you solve it in O(n) time?
- Consider edge cases such as empty inputs or extreme values.
- Optimize your solution for readability and maintainability.
// Write your solution here
function solution() {
// Your code here
}
Tips
- • Consider using a hash map for efficient lookups
- • Think about the time vs. space tradeoffs
- • Can you solve it in a single pass?