N次里面找1次的通用解法,N为偶数直接异或
single-number-ii
http://www.nowcoder.com/questionTerminal/1097ca585245418ea2efd0e8b4d9eb7a
class Solution {
public:
int singleNumber(int* A, int n) {
if (!A || n == 0) return 0;
int result = 0;
int N = 3;
if (N & 1)
{
for (int i = 0; i < 32; ++i)
{
int bit = 0;
for (int j = 0; j < n; ++j)
{
bit += (A[j] >> i) & 1;
}
result += (bit % N) << i;
}
}
else
{
for (int i = 0; i < n; ++i)
{
result ^= A[i];
}
}
return result;
}
}; 