> Как оптимизировать алгоритм поиска уникального элемента без дополнительной памяти (PHP)
Уровень: senior · Роль: backend · Язык: PHP · Категория: Технические вопросы
Компании: Travelata
Стек: PHP
> Пример ответа
Для оптимизации поиска уникального элемента в массиве (где все остальные элементы встречаются дважды) без использования дополнительной памяти в PHP применяется операция XOR (исключающее ИЛИ). Это возможно благодаря свойству: a ^ a = 0 и a ^ 0 = a. При последовательном XOR всех элементов массива парные значения обнуляются, а остаётся только уникальный элемент.
Пример реализации:
PHPfunction findUnique(array $arr): int {$result = 0;foreach ($arr as $value) {$result ^= $value;}return $result;}// Пример использования:$numbers = [1, 2, 3, 2, 1];echo findUnique($numbers); // Выведет 3
Почему это оптимально:
- Временная сложность: O(n) - один проход по массиву.
- Пространственная сложность: O(1) - используется только одна переменная.
- Работает с целыми числами, включая отрицательные (в PHP XOR работает на уровне битов).
Ограничения: Метод применим только когда каждый элемент, кроме одного, встречается ровно дважды. Для других сценариев (например, три повторения) потребуется иной подход, например, сортировка или хэш-таблица, но они уже потребуют дополнительной памяти.
> Похожие задачи по PHP
С какими паттернами проектирования ты работал
Какие принципы проектирования кроме SOLID существуют
Как устроен жизненный цикл запроса в Symfony
Что произойдет при вызове асинхронной функции без await?
> Похожие задачи по backend
С какими паттернами проектирования ты работал
Какие принципы проектирования кроме SOLID существуют
Как устроен жизненный цикл запроса в Symfony
Что произойдет при вызове асинхронной функции без await?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью