From 803da9468a9056c888c164656ec982e90e9e176d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Guzm=C3=A1n?= Date: Wed, 8 Jul 2026 17:10:53 -0500 Subject: [PATCH] Refactor JavaDeque class and improve unique count logic and Optimizes for last Use cases Refactor JavaDeque class and improve unique count logic and Optimizes for last Use cases --- Java/Collections/JavaDeque.java | 69 +++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 24 deletions(-) diff --git a/Java/Collections/JavaDeque.java b/Java/Collections/JavaDeque.java index 05d35e3..6b7abe7 100644 --- a/Java/Collections/JavaDeque.java +++ b/Java/Collections/JavaDeque.java @@ -44,30 +44,51 @@ */ +import java.io.*; import java.util.*; -public class test { - public static void main(String[] args) { - - Scanner in = new Scanner(System.in); - Deque deque = new ArrayDeque(); - int n = in.nextInt(); - int m = in.nextInt(); - int maxUnique = 0; - for (int i = 0; i < n; i++) { - int num = in.nextInt(); - if(i == 0){ - deque.add(num); - maxUnique++; - }else{ - if(deque.size() == m){ - deque.removeFirst(); - } - if(!deque.contains(num) && maxUnique frequencyMap = new HashMap<>(); + + Deque deque = new ArrayDeque<>(); + + int maxUnique = 0; + + for (int i = 0; i < k; i++) { + deque.addLast(arr[i]); + frequencyMap.put(arr[i], frequencyMap.getOrDefault(arr[i], 0) + 1); + } + + maxUnique = frequencyMap.size(); + + for (int i = k; i < n; i++) { + int removed = deque.removeFirst(); + frequencyMap.put(removed, frequencyMap.get(removed) - 1); + if (frequencyMap.get(removed) == 0) { + frequencyMap.remove(removed); } - } - System.out.println(""+maxUnique); + + int added = arr[i]; + deque.addLast(added); + frequencyMap.put(added, frequencyMap.getOrDefault(added, 0) + 1); + + maxUnique = Math.max(maxUnique, frequencyMap.size()); + } + + System.out.println(maxUnique); + + scanner.close(); } -} \ No newline at end of file +}