【編程練習】數組中只出現一次的數

一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。

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個出現一次的數,發現之後賦值即可,繼續匹配。

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