Single Number III
public List<Integer> singleNumberIII(int[] A) {
// write your code here
int xor = 0;
for(int i = 0; i < A.length; i++){
xor ^= A[i];
}
int lastBit = xor - (xor & (xor - 1));
int group1 = 0, group2 = 0;
for(int i = 0; i < A.length; i++){
if((A[i] & lastBit) == 0){
group1 ^= A[i];
}else{
group2 ^= A[i];
}
}
List<Integer> ret = new ArrayList<Integer>();
ret.add(group1);
ret.add(group2);
return ret;
}Last updated