【编程练习】数组中只出现一次的数

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

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个出现一次的数,发现之后赋值即可,继续匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值