数组中只出现一次的数字
- 参与人数:2792时间限制:1秒空间限制:32768K
- 算法知识视频讲解
题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
if(data.size()==1){*num1 = 0;*num2 =0;return;}
set<int> temp;
set<int>::iterator it;
for(int i : data){
it=temp.find(i); //查找键值为5的元素
if(it!=temp.end()) //找到
temp.erase(i);
else //未找到
temp.insert(i);
}
for(int i : temp){
*num2 = *num1;
*num1 = i;
}
}
};
class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
if(data.size()<2) return;
int temp=0;
for(auto i : data){
temp = temp ^ i;
}
int fenzu = 1;
while(!(temp&fenzu)){
fenzu = fenzu << 1;
}
int temp2=0;
for(auto i : data){
if(i&fenzu)
temp2 = temp2^i;
}
*num1 = temp2;
*num2 = temp^temp2;
}
};