您的位置:首页 > 其它

Leetcode Single Number II

2017-07-10 14:11 211 查看
Given an 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?

看到题目第一个反应就是利用hash表来解决该问题,但需要耗费O(N)的内存空间以及遍历两次,不符合要求。然后就想着像之前的题目一样如何组合运算符和数字来实现,从整个数来说是不行,但可以从每个位来进行判断。某个位的所有1的个数余3就等于所求数在该位的数值。

代码如下:

class Solution {
public:
int singleNumber(vector<int>& nums) {
int sum = 0;
int result = 0;
for(int i=0;i<32;i++)
{
int mask = 1<<i;
sum = 0;
for(int j=0;j<nums.size();j++)
{
if((nums[j]&mask)!=0)
{
sum++;
sum = sum%3;
}
}

if(sum != 0)
result |= mask;
}
return result;

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