Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example 1:
Input: [2,2,3,2]
Output: 3
Example 2:
Input: [0,1,0,1,0,1,99]
Output: 99
C++
int singleNumber(vector<int>& nums) {
int res = 0;
int sum = 0;
for(int i = 0;i < 32;++i)
{
sum = 0;
for(int j = 0;j < nums.size();++j)
{
sum += (nums[j] >> i) & 1;
}
res += (sum % 3)<<i;
}
return res;
}