Given an array of numbersnums
, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.
Example:
Input:
[1,2,1,3,2,5]
Output:
[3,5]
Note:
[5, 3]
is also correct.tag: bitwise
class Solution {
public int[] singleNumber(int[] nums) {
int xor = 0;
for (int num : nums){
xor ^= num;
}
int bit = xor & ~(xor - 1);
int[] ans = new int[2];
ans[0] = 0;
ans[1] = 0;
for (int num : nums){
if ((num & bit) > 0){
ans[0] ^= num;
}
else{
ans[1] ^= num;
}
}
return ans;
}
}