题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
int diff=0;
//先遍历异或得到两个不同数异或的结果
for(int n:array)
diff^=n;
//将两数分离
diff&=-diff;
for(int n:array){
if((diff & n)==0)
num1[0]^=n;
else
num2[0]^=n;
}
}
}