• + 0 comments

    I have a solution optimized
    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 max = 0; Set set = new LinkedHashSet<>(); for (int i = 0; i < n; i++) { int num = in.nextInt(); deque.addLast(num); set.add(num); if (deque.size()==m){ //updtae max if(set.size()>max){ max = set.size(); } int first = deque.getFirst(); deque.removeFirst(); if(!deque.contains(first)){ set.remove(first); }

                }
            }
    
            System.out.println(max);
        }
    }