JZ40 数组中只出现一次的数字
题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
思路
创建一个set(或者unordered_set),遍历数组,如果set中有,那就删除set中的这个数字;如果没有,就加入;最终set中留下的就是两个只出现一次的数字。
这里一开始遇到了一个问题,怎么去取set中的数字呢(注意不能用set[i]去取),我这里是定义了一个迭代器begin
代码
class Solution { public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { unordered_set<int> dataSet; for (int i = 0; i < data.size(); i++) { if (dataSet.count(data[i]) == 1) { dataSet.erase(data[i]); } else { dataSet.insert(data[i]); } } unordered_set<int>::iterator it = dataSet.begin(); *num1 = *it; *num2 = *(++it); } };