Я хочу решить эту проблему, используя xor
, но я запутался в некоторых строках.
Я сделал этот вопрос через HashMap
, но я хочу решить эту проблему, используя метод xor
, но я не могне получить несколько строк в коде. Например, почему мы используем xor & ~(xor-1)
.
static void FindTwoUnique(int[] input) {
int xor = input[0];
for (int i = 1; i < input.length; i++) {
xor = xor^input[i];
}
//I am confused here why we are using this
int setBit = xor& ~(xor-1);
int first = 0;
int second = 0;
//How we are dividing this into two parts
for (int i = 0; i < input.length; i++) {
if((setBit&input[i]) == 0) {
first = first^input[i];
}else {
second = second^input[i];
}
}
System.out.println(first);
System.out.println(second);
}