题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
class Solution {
public:
void FindNumsAppearOnce(vector<int> data, int* num1, int *num2) {
int len = data.size();
if (len < 2){
return;
}
int OR=data[0];
for (int i = 1; i < len; i++){
OR ^= data[i];
}
int bitOneIndex;
for (int i = 0;; i++){
if (OR & (1 << i)){
bitOneIndex = i;
break;
}
}
*num1 = 0, *num2 = 0;
for (int i = 0; i < len; i++){
if (data[i] & (1 << bitOneIndex)){
*num1 ^= data[i];
}
else{
*num2 ^= data[i];
}
}
}
};