版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42449444/article/details/90031112
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
用map来记录每个数字出现的次数,无脑遍历data,然后再对map进行for-each去寻找只出现过一次的那俩个数时,找到后分别记录在*num1和*num2中。
class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
map<int,int> m;
for(auto it : data)
{
m[it]++;
}
bool isVirgin = true; //判断是不是第一个数
for(auto it : m)
{
if(it.second == 1)
{
if(isVirgin)
{
num1 = it.first;
isVirgin = false;
}
else
{
num2 = it.first;
}
}
}
}
};