题解 | #数组中只出现一次的数(其它数出现k次)#
数组中只出现一次的数(其它数出现k次)
http://www.nowcoder.com/practice/5d3d74c3bf7f4e368e03096bb8857871
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param arr intvector
* @param k int
* @return int
*/
int foundOnceNumber(vector<int>& arr, int k) {
// write code here
//出现k次的数字每一位%k==0,如果%k!=0,那么这一位就是1
/*
101
101
101
111
---
414
每一位余3
111
即只出现一次的数字
*/
int res=0;
for(int i=0;i<32;i++)//32位
{
int count=0;
for(int j=0;j<arr.size();j++)//arr中所有数字在32位中每一位的累加和
{
if((arr[j]>>i)&1==1)
count++;
}
if(count%k!=0)
{
res=res|(1<<i);
}
}
return res;
}
};
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param arr intvector
* @param k int
* @return int
*/
int foundOnceNumber(vector<int>& arr, int k) {
// write code here
//出现k次的数字每一位%k==0,如果%k!=0,那么这一位就是1
/*
101
101
101
111
---
414
每一位余3
111
即只出现一次的数字
*/
int res=0;
for(int i=0;i<32;i++)//32位
{
int count=0;
for(int j=0;j<arr.size();j++)//arr中所有数字在32位中每一位的累加和
{
if((arr[j]>>i)&1==1)
count++;
}
if(count%k!=0)
{
res=res|(1<<i);
}
}
return res;
}
};