牛客题霸[配列中に一度しか出てこない数字]C++题解/解答


牛客题霸[配列中に一度しか出てこない数字]C++题解/解答
タイトルの説明
1つの整数配列には2つの数字を除いて、他の数字が2回現れた.プログラムを書いて、この2つの一度しか現れない数字を見つけてください.
問題:
mapで各数字が何回現れるかを記録し、どの数字が1回現れるかを再循環して見てnum 1とnum 2に与えればいい.ビット演算を使う高級な方法もある.
コード:
class Solution {
     
public:
    void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
     
        map<int,int>a;
        for(int i=0;i<data.size();i++)
        {
     
            a[data[i]]++;
        }
        int ans=0;
         for(int i=0;i<data.size();i++)
        {
     
            if(a[data[i]]==1)
            {
     
                if(ans==0)*num1=data[i];
                else *num2=data[i];
                ans++;
                
            }
        }
    }
};