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);
    }
};
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务