Нахождение единственного элемента, встречающегося один раз

Для 32-битных целых используйте XOR: пары одинаковых чисел взаимно уничтожаются, остаётся одиночное. Для произвольных безопасных целых Number лучше вариант с Set либо BigInt.

Короткий ответ

Что ответить на собеседовании

Для 32-битных целых используйте XOR: пары одинаковых чисел взаимно уничтожаются, остаётся одиночное. Для произвольных безопасных целых Number лучше вариант с Set либо BigInt.

Подробный разбор

Ответ с пояснениями

Условие

Дан массив целых чисел, где каждое значение присутствует ровно дважды, за исключением одного особого элемента, который встречается только один раз. Требуется определить этот уникальный элемент, используя алгоритм с линейной сложностью по времени.

Ответ

Для 32-битных целых используйте XOR: пары одинаковых чисел взаимно уничтожаются, остаётся одиночное. Для произвольных безопасных целых Number лучше вариант с Set либо BigInt.

function singleNumber(numbers) {
  let result = 0;
  for (const value of numbers) result ^= value;
  return result;
}

a XOR a равно 0, а a XOR 0 равно a; порядок не важен. Время O(n), дополнительная память O(1). Побитовые операции JavaScript приводят Number к знаковым 32 битам, поэтому это ограничение обязательно. Для больших целых можно использовать BigInt с начальным 0n; нарушенные гарантии о парах алгоритм не диагностирует.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее