Work dump

This commit is contained in:
Piotr Dec 2024-03-14 18:16:17 +01:00
parent 6e357de888
commit 5d8a5c9dc9
Signed by: stawros
GPG key ID: F89F27AD8F881A91
2 changed files with 93 additions and 0 deletions

View file

@ -0,0 +1,65 @@
package eu.ztsh.training.hackerrank.datastructures.dequeue;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.TreeSet;
/**
* Java Dequeue task.
* source: https://www.hackerrank.com/challenges/java-dequeue/problem
*/
public class Solution {
public static void main(String[] args) {
var in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
final Deque<Integer> deque = new ArrayDeque<>(m);
var counter = new Counter();
for (int i = 0; i < m; i++) {
var content = in.nextInt();
deque.addLast(content);
counter.add(content);
}
int max = counter.size();
for (int i = m; i < n; i++) {
var content = in.nextInt();
counter.pop(deque.removeFirst());
deque.addLast(content);
counter.add(content);
var newMax = counter.size();
if (newMax > max) {
max = newMax;
}
}
System.out.println(max);
}
}
class Counter {
public void add(int input) {
var content = map.getOrDefault(input, 0);
map.put(input, content + 1);
}
public void pop(int input) {
var content = map.get(input);
if (content == 1) {
map.remove(input);
} else {
map.put(input, content - 1);
}
}
public int size() {
return map.size();
}
private final SortedMap<Integer, Integer> map = new TreeMap<>();
}

View file

@ -0,0 +1,28 @@
package eu.ztsh.training.hackerrank.datastructures.dequeue;
import java.util.List;
import eu.ztsh.training.hackerrank.HackerRankTest;
import eu.ztsh.training.hackerrank.SolutionClassDescription;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@DisplayName("HackerRank challenges: Java Subarray")
class SolutionTest extends HackerRankTest {
@Test
public void testCase0() {
simpleAssert(
List.of(
"6 3",
"5 3 5 2 3 2"
),
List.of("3")
);
}
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Solution.class);
}
}