Skip to content

Commit 8819deb

Browse files
solves queries with fixed lengths
1 parent 4bab7ca commit 8819deb

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

Diff for: src/queues/QueriesWithFixedLength.java

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package queues;
2+
3+
import java.util.LinkedList;
4+
import java.util.Queue;
5+
import java.util.Scanner;
6+
7+
public class QueriesWithFixedLength {
8+
private static final Scanner scanner = new Scanner(System.in);
9+
10+
public static void main(String[] args) {
11+
int length = scanner.nextInt();
12+
int queries = scanner.nextInt();
13+
int[] array = getArray(length);
14+
15+
while (queries-- > 0) {
16+
int query = scanner.nextInt();
17+
System.out.println(minimumIn(array, query));
18+
}
19+
}
20+
21+
private static int minimumIn(int[] array, int subLength) {
22+
Queue<Integer> window = new LinkedList<>();
23+
addElementsIn(window, subLength, array);
24+
int maximum = window.stream().max(Integer::compareTo).get();
25+
int minimum = maximum;
26+
27+
for (int index = subLength ; index < array.length ; index++) {
28+
int removed = window.poll();
29+
int inserted = array[index];
30+
if (inserted >= maximum) {
31+
maximum = inserted;
32+
} else if (removed == maximum) {
33+
maximum = window.stream().max(Integer::compareTo).get();
34+
}
35+
window.add(inserted);
36+
minimum = Math.min(minimum, maximum);
37+
}
38+
39+
return minimum;
40+
}
41+
42+
private static void addElementsIn(Queue<Integer> window, int length, int[] array) {
43+
for (int index = 0 ; index < length ; index++) {
44+
window.add(array[index]);
45+
}
46+
}
47+
48+
private static int[] getArray(int length) {
49+
int[] array = new int[length];
50+
for (int index = 0 ; index < array.length ; index++) {
51+
array[index] = scanner.nextInt();
52+
}
53+
return array;
54+
}
55+
}

0 commit comments

Comments
 (0)