Для данного массива все элементы являются дубликатами, кроме двух элементов, найдите эти два элемента - PullRequest
1 голос
/ 04 ноября 2019

Я хочу решить эту проблему, используя 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);
}
...