Сумма элементов, встречающихся в массиве единожды

Подсчитайте частоты элементов и сложите только числа с частотой ровно один. Простое множество не подходит, поскольку оно сохраняет и повторяющиеся значения.

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

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

Подсчитайте частоты элементов и сложите только числа с частотой ровно один. Простое множество не подходит, поскольку оно сохраняет и повторяющиеся значения.

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

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

Условие

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

[1, 3, 4, 3, 2] -> 7  # (1 + 4 + 2)

Ответ

Подсчитайте частоты элементов и сложите только числа с частотой ровно один. Простое множество не подходит, поскольку оно сохраняет и повторяющиеся значения.

from collections import Counter

def sum_singletons(numbers):
    counts = Counter(numbers)
    return sum(number for number, count in counts.items() if count == 1)

Для [1, 3, 4, 3, 2] число 3 исключается целиком, а сумма остальных равна 7. Если все значения повторяются или вход пустой, результат 0. Отрицательные числа обрабатываются обычным сложением.

Ожидаемое время — O(n), дополнительная память — O(k), где k обозначает число разных значений. Вызов numbers.count для каждого элемента привёл бы к квадратичной сложности.

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

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

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

Подробнее