一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
map<int ,int> cont;
for(int i = 0 ; i < data.size() ;i++)
{
if(cont.find(data[i]) == cont.end())
cont[data[i]] = 1;
else
cont[data[i]] ++;
}
int i = 0;
while(i < data.size() && cont[data[i]] >= 2)
i++;
* num1 = data[i];
i++;
while(i < data.size() && cont[data[i]] >=2 )
i++;
* num2 = data[i];
return ;
}
使用map存储,find()在集合中没有找到就会返回end()迭代器指向。
遍历一次,第一次出现就==1,不是第一次出现就++;
这里map集合的int int 表示 x出现次数为y次
输出结果时,从i=0扫描集合,一共data.size()个数,判断每次出现的频率,由于题目给出只有2个出现一次的数,发现之后赋值即可,继续匹配。