在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。统计数组中所有重复的数。
例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
int [] array = {2,3,1,0,2,5,3};
test(list,array);
for(Integer i:list) {
System.out.println(i);
}
}
public static void test(List<Integer>list,int []array) {
int len = array.length;
for(int i = 0;i<array.length;i++ ) {
int index = array[i];
if(index>=len) {
index-= len;
}
if(array[index]>=len) {
list.add(array[i]);
}
array[index] = array[index]+len;
}
}
}