您的位置:首页 > 其它

lintcode-落单的数 III

2016-09-02 10:49 302 查看
给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字。

样例

给出 [1,2,2,3,4,4,5,3],返回 1和5

class Solution {
public:
/**
* @param A : An integer array
* @return : Two integers
*/
vector<int> singleNumberIII(vector<int> &A) {
// write your code here
vector<int> vec;
if(A.size()<=1) return vec;
int temp=0;
int i,j;
for(i=0;i<A.size();i++)
temp^=A[i];
for(j=0;j<sizeof(int)*8;j++)
{
if(((temp>>j)&0x01)==1)
break;
}
int p1=0,p2=0;
for(i=0;i<A.size();i++)
{
if(((A[i]>>j)&0x01)==0)
p1^=A[i];
else
p2^=A[i];
}
vec.push_back(p1);
vec.push_back(p2);
return vec;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: