Цвета, появляющиеся нечетное количество раз

Переключайте присутствие цвета в Set при каждом вхождении: первое добавляет, второе удаляет и так далее. В конце останутся цвета с нечётной частотой.

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

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

Переключайте присутствие цвета в Set при каждом вхождении: первое добавляет, второе удаляет и так далее. В конце останутся цвета с нечётной частотой.

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

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

Условие

Необходимо определить все элементы‑цвета из заданного списка, которые встречаются нечётное число раз, то есть у которых нет «пары».

List<String> colors = List.of("red", ..., "white", ..., "black");

Ответ

Переключайте присутствие цвета в Set при каждом вхождении: первое добавляет, второе удаляет и так далее. В конце останутся цвета с нечётной частотой.

Set<String> oddColors = new java.util.HashSet<>();
for (String color : colors) {
    java.util.Objects.requireNonNull(color);
    if (!oddColors.add(color)) oddColors.remove(color);
}

Ожидаемое время O(n), память O(k). Сравнение строк чувствительно к регистру: red и Red различаются. Порядок результата HashSet не задан; при необходимости его можно отсортировать. XOR годится для специального случая одного непарного числа, но не заменяет Set для списка всех непарных цветов.

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

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

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

Подробнее