Problem of the day
You are given a Singly Linked List of integers. You have to find if the given linked list is circular or not.
A circular linked list is a sequence of elements in which every element has a link to its next element in the sequence and the last element has a link to the first element. This means that circular linked list is similar to the single linked list except that the last node points to the first node in the list.
The first line of input contains a single integer T, representing the number of test cases or queries to be run.
The first line of each test case contains the elements of the circular linked list separated by a single space and terminated by -1. Hence, -1 would never be a list element.
The second line contains a boolean value ‘val’, if ‘val’ is 1 then the given list is circular.
Output Format
For each test case, print “True” if the given linked list is circular, else print “False”.
Print the output of each test case in a separate line.
Note
You do not need to print anything, it has already been taken care of. Just implement the given function.
1 <= T <= 10
1 <= N <= 5 * 10^4
-10^9 <= data <= 10^9 and data != -1
0 <= val <= 1
Where 'N' is the number of nodes in the linked list, ‘data’ represents the value of the nodes of the list.
Time Limit: 1 sec
3
1 2 3 4 -1
1
8 9 8 -1
0
4 -1
1
True
False
True
In the 1st test case, the given list is circular.
In the 2nd test case, the given list is not circular.
In the 3rd test case, the given list is circular.
2
3 2 1 -1
1
1 1 1 -1
0
True
False
Can you solve this problem using recursion?
In this approach, we will traverse the list until we reach the base case.
Base case: When we reach one of the following node
Recursive state: circularLLHelper(cur, head)
Next recursive state: circularLLHelper(cur->next, head)
O(N), Where ‘N’ is the number of nodes in the linked list.
We traverse every node in the list only once, thus the final time complexity is O(N).
O(N), Where ‘N’ is the number of nodes in the linked list.
There are N recursive states, so O(N) recursion stack space is used.