题目要求
1.有一个数组,只有一个数字出现两次,其他都出现两次,找出这个数字!(使用Java)
题目解析
解这个题目的时候我们要考虑使用什么方法来求出这个数!
这里我使用的是按位异或(^):如果两个相应的二进制位值不同则为1,否则为0。
先创建一个数组 int[] arr ={1,2,3,1,2}
零^任何数=这个数的本身
| 00000 | 00000 |
| ^ | ^ |
| 00001 | 00010 |
| 00001 | 00010 |
由此我们看得出一个规律两个相同的数按位异或(^)等于0
| 00001 | 00010 |
| ^ | ^ |
| 00001 | 00010 |
| 00000 | 00000 |
这样我们已经找到规律了,就可以开始写代码了!
public static void main(String[] args) {
int[] arr = {1,2,3,1,2}; //创建数组
int sum = 0; //接收最后找出的那个数
for(int i = 0;i<5;i++){ //因为数组的下表是从0开始的,所以i初始化为0。
sum = sum^arr[i]; //一个一个接着按位异或,相同数为零最后就只剩下出现一次的那个数
}
System.out.println(sum); //打印出这个数
}
最后打印出来的就是出现一次的那个数3!
有什么问题欢迎大家一起在评论区讨论
本文介绍了一种使用异或运算找出数组中唯一出现一次的数字的方法。通过创建一个包含重复数字的数组示例,逐步展示了如何利用异或运算的特性解决问题,并给出了完整的Java实现代码。
2347

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



