题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
1 class Solution { 2 public: 3 void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { 4 map<int,int> mm; 5 int len = data.size(); 6 if (len <=1) 7 { 8 *num1 = 0; 9 *num2 = 0; 10 return ; 11 } 12 for (int i = 0 ;i < len ; ++i) 13 { 14 if(mm.count(data[i]) == 0) 15 { 16 mm[data[i]] = 1; 17 } 18 else 19 { 20 ++mm[data[i]]; 21 } 22 } 23 int cnt = 1; 24 for (map<int,int>::iterator it = mm.begin() ; it != mm.end() ; ++it) 25 { 26 if(it->second == 1) 27 { 28 if(cnt == 1) 29 { 30 *num1 = it->first; 31 --cnt; 32 } 33 else 34 { 35 *num2 = it->first; 36 break; 37 } 38 } 39 } 40 } 41 };