您的位置:首页 > 编程语言 > Go语言

leetcode: (137) Single Number II

2015-09-24 23:35 483 查看
【Question】

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(vector<int>& nums) {
int sum[32]={0};
int res=0;
for(int i=0;i<nums.size();i++)
{
int temp[32]={0};
if (nums[i]>0) temp[31]=1;
else temp[31]=0;
for(int j=0;nums[i]!=0;j++)
{
temp[j]=nums[i]%2;
nums[i]/=2;
}
for(int k=0;k<32;k++)
sum[k]+=abs(temp[k]);
}

for(int i=30;i>=0;i--)
res=res*2+(sum[i]%3);
if(sum[31]%3==0&&res!=0)
res = -1*res;
else if(sum[31]%3==0&&res==0)
res = -2147483648;

return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode algorithms