Description
给定一个数组
Constraints
要求
Solution
二进制分组。设xor
之和,
但是这个时候仍不足以区分答案。进一步发现
划分为2组后就是低配版Single Number问题
Code
class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
int sum = 0;
for(auto n : nums) sum ^= n;
int pos;
for(auto p = 31; ~p; --p) {
if(sum >> p & 1) {
pos = p;
break;
}
}
vector<int> ab(2);
for(auto n : nums) {
ab[n >> pos & 1] ^= n;
}
return ab;
}
};