class Solution {
public:
int GetExclusiveOr(const vector<int>& nums)
{
int Yihuo = 0;
for(int i = 0;i<nums.size();i++)
{
Yihuo = Yihuo^nums[i];
}
return Yihuo;
}
vector<int> singleNumber(vector<int>& nums) {
int Yihuo = GetExclusiveOr(nums);
int x = 1;
while(!(Yihuo&x))//表示最后一位为0
{
x = x<< 1;
}
//按照1的位置分成两组
vector<int> group1, group2;
for(int i = 0;i<nums.size();i++)
{
if(nums[i] & x)
group1.push_back(nums[i]);
else
group2.push_back(nums[i]);
}
vector<int> singleNums;
singleNums.push_back(GetExclusiveOr(group1));
singleNums.push_back(GetExclusiveOr(group2));
return singleNums;
}
};
LeetCode || Single Number III
最新推荐文章于 2020-08-31 22:54:08 发布