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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章