题目:给定一个整型数组,数组中存在多个数据,其中有相同的数据,是偶数个的有多个,但是是奇数个的,只有一个,找出那个奇数 eg:int[] arr = {2,4,2,3,2,4,3}; 其中 2 为 3个4为2个,3为2个,输出 2
分析: 有没有一种运算,可以将相同的数据,相互抵消掉,如果剩下单独的一个就是答案,就是我们玩的,消消乐的游戏
^ 异或运算,相同为0,不同为1,且有个运算技巧就是:无进位相加 eg: a:010011 b:100100 c = a^b = 110111
解题: 对数组中所有元素,进行异或运算,最终剩下的就是对应的奇数个的数
private static int findOdd(int[] arr) {
int eor = 0;
for (int num : arr) {
eor ^= num;
}
System.out.println(eor);
return eor;
}