思路: 异或运算
解法一:
import java.util.*;
public class Main{
public static void main(String[] args) {
int N = 1001;
int[] arr = new int[N];
for(int i = 0;i < N;i++) {
arr[i] = i+1;
}
arr[N-1] = new Random().nextInt(N-1)+1;
int index = new Random().nextInt(N)+1;
arr[index] = arr[index]^arr[N-1];
arr[N-1] = arr[index] ^ arr[N-1];
arr[index] = arr[index] ^ arr[N-1];
for(int i = 0;i < N;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
int ans = 0;
for(int i = 1;i <= N-1;i++) {
ans = ans ^ i;
}
for(int i = 0;i < N;i++) {
ans = ans ^ arr[i];
}
System.out.println(ans);
}
}
解法二:
开辟辅助空间
import java.util.*;
public class Main{
public static void main(String[] args) {
int N = 1001;
int[] arr = new int[N];
for(int i = 0;i < N;i++) {
arr[i] = i+1;
}
arr[N-1] = new Random().nextInt(N-1)+1;
for(int i = 0;i < N;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
int[] helper = new int[N];
for(int i = 0;i < N;i++) {
helper[arr[i]]++;
}
for(int i = 0;i < N;i++) {
if(helper[i] == 2) {
System.out.println(i);
break;
}
}
}
}