找出唯一成对的数
1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?
import java.util.Random;
public class Sort {
public static void main(String[] args) {
//唯一成对的数
int N = 1001;
int[] arr = new int[N];
for (int i=0;i<arr.length-1;i++){
arr[i] = i+1;
}
//最后一个数是随机数
arr[N-1] = new Random().nextInt(N-1)+1;
int[] helper = new int[N+1];
for (int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
for(int i=0;i<N;i++){
helper[arr[i]]++;
}
for (int i=0;i<N+1;i++){
if (helper[i]==2){
System.out.println(i);
}
}
}
}