在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
示例 1:
输入:nums = [3,4,3,3]
输出:4
示例 2:
输入:nums = [9,1,7,9,7,9,7]
输出:1
限制:
1 <= nums.length <= 10000
1 <= nums[i] < 2^31
菜鸡实在不会自动机,只能用垃圾一点的办法了
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ma[32];
memset(ma,0,sizeof(ma));
for(int i=0;i<nums.size();i++)
{
int j=0;
while(nums[i])
{
if(nums[i]&1)
{
ma[j]++;
}
j++;
nums[i]>>=1;
}
}
long ans=0;
long cnt=1;
for(int i=0;i<32;i++)
{
if(ma[i]%3==1)
{
ans+=cnt;
}
cnt<<=1;
}
return ans;
}
};