作为 Java 面试试卷的一部分,我有以下问题需要解决。但我有点想知道如果没有任何 Collection 或中间 Array,我该如何实现它。
问题:- 在不使用任何集合或其他中间数组的情况下从 int 数组中计算重复项
Input values:- {7,2,6,1,4,7,4,5,4,7,7,3, 1}
Output:- Number of duplicates values: 3
Duplicates values: 7, 4, 1
我已经实施了以下解决方案,但还没有完成。有人知道吗?谢谢。
public static void duplicate(int numbers[]) {
for (int i = 0; i < numbers.length; i++) {
boolean duplicate = false;
int j = 0;
while (j < i){
if ((i != j) && numbers[i] == numbers[j]) {
duplicate = true;
}
j++;
}
if (duplicate) {
System.out.print(numbers[i] + " ");
}
}
}
原文由 Channa 发布,翻译遵循 CC BY-SA 4.0 许可协议
解决这个问题最简单的方法是先对数组进行排序,然后在遇到重复项时遍历数组计数:
输出:
请注意,我的输出顺序与您的输出顺序相反,因为您需要通读整个数组才能知道总共有多少重复项。另外,我要指出的是,该解决方案使用的唯一状态是输入数组本身,加上一些
int
。此代码已在 IntelliJ 中测试并且可以正常工作。