Cycle Detection in a Singly Linked List
Determine if a given singly linked list of integers forms a cycle or not.
A cycle in a linked list occurs when a node's next
points back to a previous node in the list. Thus, the list does not have a linear structure with a beginning and an end, but instead cycles through a loop of nodes.
Input:
The first line of each test case contains the elements of the singly linked list, separated by a single space and terminated by -1, where -1 indicates the end of the list and would never be a list element.
The second line contains an integer position "pos" which denotes the position (0-indexed) in the linked list where the tail connects to a cycle, or -1 if there is no cycle.
Output:
The only line of output should be 'true' if the linked list contains a cycle, or 'false' if it does not.
The function should not explicitly print the output, as it is handled automatically.
Example:
Input:
3 2 0 -4 -1
1
Output:
true
Explanation:
The linked list is: 3 -> 2 -> 0 -> -4, and position 1 indicates the tail connects to the second node, forming a cycle.
Constraints:
- 0 ≤ N ≤ 106
- -1 ≤ pos < N
- -109 ≤ data ≤ 109 and data ≠ -1
Note:
Aim to solve this problem with O(N) time complexity and O(1) space complexity.
Be the first one to answer
Add answer anonymously...
Popular interview questions of Developer Associate
Stay ahead in your career. Get AmbitionBox app
Helping over 1 Crore job seekers every month in choosing their right fit company
65 L+
Reviews
4 L+
Interviews
4 Cr+
Salaries
1 Cr+
Users/Month
Contribute to help millions
Get AmbitionBox app