我的算法在所有可能的连续子数组中查找唯一整数的最大数量不适用于大量整数和子数组。例如,我必须从控制台读取总共6 个整数,每个子数组的大小为3。所以,对于这种输入 5 3 5 2 3 2 我的程序应该打印3并且这工作正常。第一个子数组存储 5 3 5 所以唯一整数的数量是2。第二个子数组存储 3 5 2 所以唯一整数的数量是3。第三个子数组也会打印3因为它存储 5 2 3 等等......
但是,我的算法似乎无法处理子数组大小为99877的100000个整数。谁能解释我,我做错了什么?
仅供参考:我必须使用像 LinkedList 或 ArrayDeque 这样的 Deque 实现
for (int i = 0; i < totalAmountOfIntegers; i++) {
int anyIntegerNumber = consoleInput.nextInt();
arrayDequeToStoreAllIntegers.addLast(anyIntegerNumber);
hashSetToStoreUniqueIntegers.add(anyIntegerNumber);
if (arrayDequeToStoreAllIntegers.size() == sizeOfEachArrayDequeAsSubArray) {
if (hashSetToStoreUniqueIntegers.size() > quantityOfUniqueIntegersInSubarray) {
quantityOfUniqueIntegersInSubarray = hashSetToStoreUniqueIntegers.size();
}
int firstNumberInDeque = arrayDequeToStoreAllIntegers.remove();
if (hashSetToStoreUniqueIntegers.size() == sizeOfEachArrayDequeAsSubArray) {
hashSetToStoreUniqueIntegers.remove(firstNumberInDeque);
}
}
}