牛客题霸[配列中に一度しか出てこない数字]C++题解/解答
牛客题霸[配列中に一度しか出てこない数字]C++题解/解答
タイトルの説明
1つの整数配列には2つの数字を除いて、他の数字が2回現れた.プログラムを書いて、この2つの一度しか現れない数字を見つけてください.
問題:
mapで各数字が何回現れるかを記録し、どの数字が1回現れるかを再循環して見てnum 1とnum 2に与えればいい.ビット演算を使う高級な方法もある.
コード:
タイトルの説明
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++;
}
}
}
};