import java.util.ArrayList;
import java.util.Random;
public class find_weinum {
public static void main(String[] args) {
// 小范围
int N=11;
int arr[]=new int[N];//创建数组
for (int i=0;i<arr.length-1;i++) {
arr[i]=i+1;//生成一串连续数
}
//最后一个是随机数:nextInt(N-1)+1生成(0-9)+1=(1-10)的随机数
arr[arr.length-1]=new Random().nextInt(N-1)+1;
//随机下标:(0-10)之间的一个下标
int index=new Random().nextInt(N);
//创建列表
ArrayList<Integer> arraylist=new ArrayList<Integer>();
for(int j=0;j<arr.length;j++) {
//列表添加array.add
arraylist.add(arr[j]);
}
System.out.println(arraylist);
int x1=0;
// 得到1-10的异或式子,用x1保存
for(int i=1;i<=10;i++) {
x1=(x1^i);
}
// 得到的x1对arr数组进行异或,多出来的便是答案
for(int i=0;i<=arr.length-1;i++) {
x1=x1^arr[i];
}
System.out.println(x1);
}
}
知识点:
位运算 A^A=0,A^0=A
System.out.println("=======辅助空间=======");
int[] fuzhu=new int[N];
for (int i=0;i<N;i++) {
// 将arr里的值作为fuzhu的下标,对辅助的值进行加1,当有值为2时存在相同数字
fuzhu[arr[i]]++;
System.out.println(fuzhu[arr[i]]);
}
//看一下fuzhu的值
for(int i=0;i<N;i++) {
if(fuzhu[i]==2) {
System.out.println("相同数字:"+i);
}
}
1.3找落单数
java异或
public static void main(String[] args) {
int[] arr=new int[] {1,2,3,4,5,5,6,6,4,1,3};
//将arr异或
int x=0;
for(int i=0;i<arr.length;i++) {
x=x^arr[i];
}
System.out.println(x);
}