import java.util.Arrays;
import java.util.Random;
/*
* 在数组0~99加入一个数并打乱,再找出此数
* */
class 找出重复数字 {
public static void main(String[] args) {
int[] arr = new int[101];
for (int i = 0; i < arr.length - 1; i++) {
arr[i] = i;
}
arr[100] = 88;
System.out.println(Arrays.toString(arr));
//打乱数组
Random r = new Random();
for (int i = 0; i < arr.length - 1; i++) {
int a = r.nextInt(101);
int b = r.nextInt(101);
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
System.out.println(Arrays.toString(arr));
// 找出重复数字
// 方法一:
flag: for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
System.out.println("重复数字:" + arr[i]);
break flag;
}
}
}
// 方法二:
int sum = 0, sum2 = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
sum2 += i;
}
sum2 -= 100;
System.out.println("重复数字:" + (sum - sum2));
// 方法三:
for (int i = 1; i < arr.length; i++) {// 用arr[0]异或后面所有数
arr[0] ^= arr[i];
}
for (int i = 0; i < 100; i++) {// 用arr[0]异或原来所有数 0 ~ 99
arr[0] ^= i;
}
System.out.println("重复数字" + arr[0]);// 相当于arr[0] ^ 88 ^ arr[0],其他是arr[0] ^ i ^ i
}
}
在数组0~99加入一个数并打乱,再找出此数
最新推荐文章于 2021-10-09 01:34:09 发布
本文介绍了一段Java代码,通过在数组0到99中插入数字88并打乱,展示了三种不同的方法来找出这个重复数字。方法一是双重循环比较,方法二是利用求和公式,方法三是异或操作。
2858

被折叠的 条评论
为什么被折叠?



