您的位置:首页 > 其它

LeetCode: Single Number II

2014-08-26 12:07 363 查看
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) {
vector<int> result(32, 0);
int single = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < 32; j++)
{
result[j] += ((A[i] & (1 << j)) >> j);
}
}
for(int i = 0; i < 32 ; i++)
{
result[i] = result[i] % 3;
single |= (result[i] << i);
}
return single;

}
};


Round 2:

class Solution {
public:
int singleNumber(int A[], int n) {
int digits[32] = {0};
int result = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < 32; j++)
{
digits[j] += (A[i] & (1 << j)) >> j;
}
}
for(int i = 0; i < 32; i++)
{
result |= (digits[i] % 3) << i;
}
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: