Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
class Solution {
public:
int singleNumber(int A[], int n)
{
int ans = 0;
for(int i=0; i<n; i++)
ans ^= A[i];
return ans;
}
};
Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
class Solution {
public:
int singleNumber(int A[], int n)
{
int ans = 0;
for(int i=0; i<32; i++)
{
int sum = 0;
for(int j=0; j<n; j++)
{
sum += (A[j] >> i) & 1;
}
ans |= (sum %3) << i;
}
return ans;
}
};