Sobes.tech
Back to questions
Senior
3

//Дан массив чисел, в котором все числа кроме одного имеют пару, //найти число, которое встречается только один раз // <= [1, 0, 3, -2, 9, 9, 1, -2, 0] // => 3 int find(int[] arr){ int result = 0; for(int num : arr){ result ^= num; } return result; }

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

В представленном коде используется операция XOR (исключающее ИЛИ) для поиска числа, которое встречается в массиве только один раз, когда все остальные числа имеют пару.

Идея в том, что XOR двух одинаковых чисел даёт 0, а XOR с 0 даёт само число. Поэтому, пройдя по всему массиву и применяя XOR ко всем элементам, в итоге останется только число без пары.

Пример на Java:

int find(int[] arr) {
    int result = 0;
    for (int num : arr) {
        result ^= num; // XOR с текущим числом
    }
    return result;
}

// Использование:
// int[] arr = {1, 0, 3, -2, 9, 9, 1, -2, 0};
// System.out.println(find(arr)); // Выведет 3

Этот метод эффективен по времени (O(n)) и не требует дополнительной памяти.