您的位置:首页 > 其它

Leetcode--Single Number II

2014-10-04 11:01 288 查看
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) {
int one=0;//记录出一次的位
int two=0;//记录出现两次的为
int xthree=0;//出现三次位的取反用于清零出现三次的数

for(int i=0;i<n;i++)
{
two |= one&A[i];
one ^=A[i];
xthree=~(one&two); //one&two结果为1的位表示出现三次
one &= xthree;//再与 ones、twos进行与操作将出现了三次的位置清零。
two &= xthree;
}
return one;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: