40、数组中只出现一次的数字

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

class Solution {
public:
    void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
        int temp = 0;
        int n = data.size();
        if(n<2)
            return;
        for(int i=0;i<n;i++)
        {
            temp ^= data[i];
        }
        int num = temp;
        int k = 0x01;
        while(k>0)
        {
            if((num&k)==0)
                k = k<<1;
            else
                break;
        }
        *num1 = 0;
        *num2 = 0;
        for(int i=0;i<n;i++)
        {
            if(data[i]&k)   //注意,这个地方是data[i]和k相与,而不是和temp相与!!!
                *num1 ^= data[i];
            else
                *num2 ^= data[i];
        }
        return;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为...
    qmss阅读 3,991评论 0 1
  • 题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
    quiterr阅读 1,445评论 0 0
  • 题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次,请写程序找出这两个只出现一次的数字。要求时间复杂度是...
    3e1094b2ef7b阅读 1,571评论 0 0
  • 题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
    NoFacePeace阅读 1,135评论 0 0
  • 正如我所预料的,他悄无声息的走了。来时带着雨,走时却是艳阳天。没有什么深情,没有什么难忘,只是相处了十四天。 我见...
    绵羊菌阅读 3,517评论 0 0

友情链接更多精彩内容