Is it a Circular Linked List?

Easy
0/40
Average time to solve is 15m
profile
Contributed by
16 upvotes
Asked in companies
MicrosoftSAP LabsSamsung R&D Institute

Problem statement

You are given a Singly Linked List of integers. You have to find if the given linked list is circular or not.

image

Detailed explanation ( Input/output format, Notes, Images )
Input Format
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.
Constraints
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
Sample Input 1
3
1 2 3 4 -1
1
8 9 8 -1
0
4 -1
1
Sample Output 1
True
False
True
Explanation for Sample Input 1
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.
Sample Input 2
2
3 2 1 -1
1
1 1 1 -1
0
Sample Output 2
True
False
Hint

Can you solve this problem using recursion?

Approaches (2)
Recursive Approach

In this approach, we will traverse the list until we reach the base case.
 

Base case: When we reach one of the following node

  • NULL:  represents that the given linked list is not circular.
  • head: represents that the given linked list is circular.
     

Recursive state: circularLLHelper(cur, head)

Next recursive state: circularLLHelper(cur->next, head)

Time Complexity

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).

Space Complexity

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.

Code Solution
(100% EXP penalty)
Is it a Circular Linked List?
Full screen
Console