Given an array of integers, every element appears
three
times except for one. Find that single one.
<pre name="code" class="cpp">class Solution
{
public:
int singleNumber(vector<int>& nums)
{
//对每一位模拟3进制加法
//one:累加到当前位置是否出现1个1
//two:是否出现2个1
//three:是否出现3个1,出现3个1表示进位,变为0(各位之间不保留进位)
int one = 0, two = 0, three = 0;
for (int i = 0; i < nums.size(); i++)
{
two |= one&nums[i];
one ^= nums[i];
three = two&one;
one ^= three;
two ^= three;
//one&=~three;
//two&=~three;
}
return one;
}
};