260. Single Number III
Input: [1,2,1,3,2,5]
Output: [3,5]// Two pass method with XOR Bit Manipulation
vector<int> singleNumber(vector<int>& nums) { // time: O(n); space: O(1)
int diff = accumulate(nums.begin(), nums.end(), 0, bit_xor<int>());
diff &= -diff; // -diff = ~diff + 1
vector<int> res(2, 0);
for (int num : nums) {
if ((num & diff) == 0) res[0] ^= num;
else res[1] ^= num;
}
return res;
}Last updated