c++
class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
int xor_val = 0;
for (auto &v : nums) {
xor_val ^= v;
}
int bit = xor_val & ~(xor_val -1);
vector<int> res(2, 0);
for (auto &v : nums) {
if ((v&bit) > 0)
res[0] ^= v;
else
res[1] ^= v;
}
return res;
}
};
https://leetcode.com/discuss/99744/bit-manipulation-beats-99-62%25