位运算
找出落单的数
入门的第二道题,也同样还是“位运算”的题,有了第一道的经验,这一道做的比较轻松一点,但是学习的路还很长。
题目:找出落单的数
描述:一个数组里除了某一个数字之列,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。
结题思路:异或解法
1、利用 A^0 = A, A^A^B^C^C = 0^B^0 = B
2、去除重复的数字
3、结果即为我们要的数
public class 找出落单的数 {
public static void main(String[] args) {
//构建满足题目的数组
int N = 31;
int[] arr = new int[N];
Random random = new Random();
//假设这个小组中的数字的值均在1~100
arr[0] = random.nextInt(100) + 1;
for (int i = 1; i < arr.length - 1; i += 2) {
arr[i] = random.nextInt(100) + 1;
arr[i + 1] = arr[i];
}
System.out.println(Arrays.toString(arr));
System.out.println("=====================");
//异或解法:
//1、利用 A^0 = A, A^A^B^C^C = 0^B^0 = B
//2、去除重复的数字
//3、结果即为我们要的数
int num = 0;
for (int i = 0; i < arr.length; i++) {
num = (num ^ arr[i]);
}
System.out.println("落单的数字是:" + num);
}
}
调试结果:

如有错误,敬请指正!
本文介绍了一道关于位运算的编程题,题目要求在数组中找出仅出现一次的数字。作者使用异或操作的性质,通过将数组中所有元素进行异或运算,成功去除了重复数字,从而找到落单的数字。这种方法简洁高效,展示了位运算在解决特定问题时的强大能力。
912

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



