题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
题解:
用map来记录每个数字出现几次,然后再循环一遍看哪个数字出现一次,赋给num1和num2就行
还有个高级做法是用位运算,异或^,这里就不细讲了
代码:
class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
map<int,int>a;
for(int i=0;i<data.size();i++)
{
a[data[i]]++;
}
int ans=0;
for(int i=0;i<data.size();i++)
{
if(a[data[i]]==1)
{
if(ans==0)*num1=data[i];
else *num2=data[i];
ans++;
}
}
}
};