【查找】【位操作】数组中,除某一个数字x之外,其他数字都出现三次,而x出现一次,找出x

来源:互联网 发布:年均增速算法 编辑:程序博客网 时间:2024/05/22 06:20

题目:EPI

数组中,除某一个数字x之外,其他数字都出现三次,而x出现一次,找出x。

推广一下,所有其他数字出现N(N>=2)次,而一个数字出现1次都可以用这种解法来推导出这个出现1次的数字。

具体解析请看【白话经典算法系列之十七】 数组中只出现一次的数。

int Find_Number_Once(const vector<int> &A){if(A.empty())throw new exception;int bit[32]={0};//全部初始化为零//int bit[32]; 初始化不为零!!!for(int i=0;i<A.size();i++){for(int j=0;j<32;j++){if(A[i] & (1<<j) )bit[j]++;}}int res=0;for(int i=0;i<32;i++){if(bit[i]%3!=0)res=res | (1<<i);}return res;}

EPI书上P275写了一段改进后的代码(不知所云),如下所示:



0 0