我试着解决 HackerRank 上一个关于 Java Deque 的问题。我的代码通过了除了含有 100,000 个输入的测试用例以外的所有测试用例。
问题:给定 N 个整数,需要找出大小为 M 的所有可能连续子数组中唯一整数的最大数量。 ---> 我们被给定了 N 个整数,需要在每个大小为 M 的连续子数组中找到"唯一的整数"的数量。然后输出这些"唯一整数"的最大数量。
请告诉我我的代码哪里出错了。
问题:给定 N 个整数,需要找出大小为 M 的所有可能连续子数组中唯一整数的最大数量。 ---> 我们被给定了 N 个整数,需要在每个大小为 M 的连续子数组中找到"唯一的整数"的数量。然后输出这些"唯一整数"的最大数量。
link: https://www.hackerrank.com/challenges/java-dequeue/problem
我的代码:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Deque deque = new ArrayDeque<>();
HashSet<Integer> set = new HashSet<>();
int n = in.nextInt();
int m = in.nextInt();
int max=0;
for (int i = 0; i < n; i++) {
int num = in.nextInt();
deque.add(num);
set.add(num);
if(i>=m-1){
if(set.size()>max)max=set.size();
Integer removed=(Integer)deque.removeFirst();
set.remove(removed);
set.add((Integer)deque.peek());
}
}
System.out.println(max);
}
请告诉我我的代码哪里出错了。