public class Test3 {
public static void main(String[] args) {
int []arr = {1,2,3,4,5,6,3,4,5,6};
//首先异或所有的,得到两个奇数个的数
int temp =0;
for (int i : arr) {
temp ^= i ;
}
// System.out.println(temp);
// System.out.println(1^2);
//一个属与上它本身取反就能找到他的最右测的1
/** 把一个不等于零的书最右侧的一提取出来
* 1010111100 取反 -》 0101000011 + 1 -》 0101000100
*
* 1010111100
* &
* 0101000100
* ||
* \/
* 0000000100
*/
int a = temp & (~temp +1);
// System.out.println(a);
int only = 0;
for (int cur : arr) {
if ( (cur & a) == 0) {
only ^= cur;
}
}
System.out.println(only + " " + (temp ^ only));
}
}
03-11
384
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)