[Hackerrank] Data Structures - Dequeue 풀이
예문
https://www.hackerrank.com/challenges/java-dequeue/problem
Sample Input
6 3
5 3 5 2 3 2
Sample Ouput
3
해석
- Dequeue
- 각 서브배열에서 최대 유니크한 숫자를 출력하라!
풀이
- Set 사용
- Dequeue 를 poll 하고도 peek 한 수가 Dequeue 에 포함되지 않으면 Set 제거
제약사항
코드
public class DequeueData {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Deque<Integer> deque = new ArrayDeque<>();
Set set = new HashSet<Integer>();
int max = 0;
int n = in.nextInt();
int m = in.nextInt();
for (int i = 0; i < n; i++) {
int num = in.nextInt();
deque.add(num);
set.add(num);
if (deque.size() == m) {
max = Math.max(max, set.size());
int pollNum = deque.poll();
if (!deque.contains(pollNum)) {
set.remove(pollNum);
}
}
}
System.out.println(max);
}
}