Java 在数组中查找重复整数
我在作业中遇到的问题是:有一个由n个整数组成的数组,都在1到1000000之间,至少有一对相等的整数,如何找到第一对?需求是完成O(n)的时间复杂度,因此嵌套循环不是选项,语言是java。有什么建议吗?只需计算数组中某个数字的出现次数。为了实现这个目标,您可以选择使用数组、HashMap、HashSet等等 由于需要找到第一个副本,如果我必须使用set,我将执行以下操作:Java 在数组中查找重复整数,java,arrays,Java,Arrays,我在作业中遇到的问题是:有一个由n个整数组成的数组,都在1到1000000之间,至少有一对相等的整数,如何找到第一对?需求是完成O(n)的时间复杂度,因此嵌套循环不是选项,语言是java。有什么建议吗?只需计算数组中某个数字的出现次数。为了实现这个目标,您可以选择使用数组、HashMap、HashSet等等 由于需要找到第一个副本,如果我必须使用set,我将执行以下操作: int[] numbers = ... Set<Integer> numberSet = new HashSet
int[] numbers = ...
Set<Integer> numberSet = new HashSet<>();
for ( int number : numbers ) {
if ( ! numberSet.add(number) ) {
return number;
}
}
int[]数字=。。。
Set numberSet=newhashset();
用于(整数:数字){
如果(!numberSet.add(number)){
返回号码;
}
}
我会制作一个布尔[]
数组来标记我是否已经在迭代的前一步中找到了一些数字
例如:
int[] input = { .... };
boolean[] found = new boolean[1000000];
int result = -1;
for (int i = 0; i < input.length; i++) {
if (!found[input[i]]) {
found[input[i]] = true;
} else {
result = input[i];
break;
}
}
System.out.println("I found a pair of " + result);
int[]输入={….};
布尔值[]已找到=新布尔值[1000000];
int结果=-1;
for(int i=0;i
显示您的代码您为什么不能使用集合?添加值时,如果add return false,则表示该值重复。在这种情况下,contains是多余的,因为如果对象已存在于集合中,则add已返回布尔值;)