-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathDetect_Loop_in_linked_list.java
77 lines (63 loc) · 1.6 KB
/
Detect_Loop_in_linked_list.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// { Driver Code Starts
// driver code
import java.util.*;
import java.io.*;
import java.lang.*;
class Node
{
int data;
Node next;
Node(int x)
{
data = x;
next = null;
}
}
class GFG
{
public static void makeLoop(Node head, Node tail, int x){
if (x == 0) return;
Node curr = head;
for(int i=1; i<x; i++)
curr = curr.next;
tail.next = curr;
}
public static void main (String[] args){
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t--> 0)
{
int n = sc.nextInt();
int num = sc.nextInt();
Node head = new Node(num);
Node tail = head;
for(int i=0; i<n-1; i++)
{
num = sc.nextInt();
tail.next = new Node(num);
tail = tail.next;
}
int pos = sc.nextInt();
makeLoop(head, tail, pos);
Solution x = new Solution();
if( x.detectLoop(head) )
System.out.println("True");
else
System.out.println("False");
}
}
}
class Solution {
public static boolean detectLoop(Node head){
Node slow = head;
Node fast = head;
while( slow != null && fast != null && fast.next != null ){
slow = slow.next;
fast = fast.next.next;
if( slow == fast ){
return true;
}
}
return false;
}
}