您的位置:首页 > 其它

[LeetCode] Single Number II

2013-10-06 16:15 357 查看


Single Number II



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?



这个还比较好想,如果某位上1出现的次数为 3*k +1 的话,那么只出现一次的数在该位必定为1咯。


比较坑的是提交几次发现 符号位老是丢掉,不明所以,后来发现是


const int MASK 这行出现了问题, 应该是 const unsigned int MASK,然后就好了。



class Solution {
public:
int singleNumber(int A[], int n) {
// Note: The Solution object is instantiated only once and is reused by each test case.
assert(A&&n>0&&(n-1)%3==0);
unsigned int ans=0;
for(int i=0;i<32;i++)
{
const unsigned int MASK=(1<<i);
int t=0;
for(int j=0;j<n;j++)
t+=(A[j]&MASK)>0?1:0;
ans|=(t%3==0)?0:MASK;
}
return (int)ans;
}
};


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