欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

牛客题霸 [数组中只出现一次的数字] C++题解/答案

程序员文章站 2022-07-15 10:31:53
...

牛客题霸 [数组中只出现一次的数字] C++题解/答案

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

题解:

用map来记录每个数字出现几次,然后再循环一遍看哪个数字出现一次,赋给num1和num2就行
还有个高级做法是用位运算,异或^,这里就不细讲了

代码:

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++;
                
            }
        }
    }
};