思路1:累加1+2+3……+10=55,重复数=数组累加和-55;
思路2:利用异或计算:依据:依据是b^b=0 b^0=b
异或计算 ^:1^1=0 0^0=0 1^0=1 0^1=1
public static void main(String[] args) {
Random r = new Random();
List<Integer> list = new ArrayList<>();
int arr [] = new int [11];
for (int i = 1; i <=10; i++) {
list.add(i);
}
int target=r.nextInt(10)+1;
list.add(target);
for (int i = 0; i < arr.length; i++) {
arr[i]=list.remove(r.nextInt(list.size()));//Integer remove(int index)删除当前下标的元素,并返回被删除元素
}
System.out.print("随机打乱的数组"+Arrays.toString(arr));
//方法1:累加1+2+3+……+10=55,数组累加-55=重复数
int res1=0;
for (int tmp:arr) {
res1+=tmp;
}
System.out.println("\n重复数字为:"+(res1-55));
//方法2:利用异或计算,依据是b^b=0 b^0=b
int res2=0;
for (int i = 1; i <=10; i++) {
res2^=i;
}
for (int tmp:arr) {
res2^=tmp;
}
System.out.println("重复数字为:"+res2);
}