HackerRank Java Dequeue problem solution YASH PAL, 31 July 202416 January 2026 HackerRank Java Dequeue problem solution – In computer science, a double-ended queue (dequeue, often abbreviated to deque, pronounced deck) is an abstract data type that generalizes a queue, for which elements can be added to or removed from either the front (head) or back (tail).Deque interfaces can be implemented using various types of collections such as LinkedList or ArrayDeque classes. For example, deque can be declared as:Deque deque = new LinkedList<>(); or Deque deque = new ArrayDeque<>(); You can find more details about Deque here.In this problem, you are given n integers. You need to find the maximum number of unique integers among all the possible contiguous subarrays of size M.Note: Time limit is 3 second for this problem.HackerRank Java Dequeue problem solution.import java.util.*; public class test { public static void main(String[] args) { Scanner in = new Scanner(System.in); final Deque<Integer> deque = new ArrayDeque<Integer>(); final Map<Integer, Integer> map = new HashMap<Integer, Integer>(); final int n = in.nextInt(); final int m = in.nextInt(); int res = 0; for (int i = 0; i < n; i++) { final int num = in.nextInt(); deque.addLast(num); if (map.containsKey(num)) { map.put(num, map.get(num).intValue() + 1); } else { map.put(num, 1); } if (deque.size() == m + 1) { final int key = deque.removeFirst(); final int v = map.get(key); if (v == 1) { map.remove(key); } else { map.put(key, v - 1); } } final int cnt = map.size(); if (cnt > res) { res = cnt; } } System.out.println(res); } }Second solution import java.util.*; public class test { public static void main(String[] args) { Scanner in = new Scanner(System.in); Deque<Integer> deque = new ArrayDeque<Integer>(); HashMap<Integer, Integer> freqs = new HashMap<Integer, Integer>(); int n = in.nextInt(); int m = in.nextInt(); int ans = 0, countDistinct = 0; for (int i = 0; i < n; i++) { int num = in.nextInt(); deque.addLast(num); if (freqs.get(num) == null) freqs.put(num,0); freqs.put(num,freqs.get(num)+1); if (freqs.get(num)==1) countDistinct++; if (deque.size()==m+1){ int rem = deque.removeFirst(); freqs.put(rem,freqs.get(rem)-1); if (freqs.get(rem) == 0) countDistinct--; } if (deque.size()==m){ if (countDistinct > ans) ans = countDistinct; } } System.out.println(ans); } }A solution in java8 programming. import java.util.*; public class test { public static void main(String[] args) { Scanner in = new Scanner(System.in); Deque<Integer> deque = new ArrayDeque<>(); HashSet<Integer> set = new HashSet<>(); int n = in.nextInt(); int m = in.nextInt(); int max = Integer.MIN_VALUE; for (int i = 0; i < n; i++) { int input = in.nextInt(); deque.add(input); set.add(input); if (deque.size() == m) { if (set.size() > max) max = set.size(); int first = deque.remove(); if (!deque.contains(first)) set.remove(first); } } System.out.println(max); } } coding problems solutions Hackerrank Problems Solutions Java solutions HackerRankjava