一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。
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個出現一次的數,發現之後賦值即可,繼續匹配。