Подсчитайте частоты элементов и сложите только числа с частотой ровно один. Простое множество не подходит, поскольку оно сохраняет и повторяющиеся значения.
Сумма элементов, встречающихся в массиве единожды
Подсчитайте частоты элементов и сложите только числа с частотой ровно один. Простое множество не подходит, поскольку оно сохраняет и повторяющиеся значения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дан массив целых чисел. Требуется вычислить сумму всех значений, которые встречаются в массиве ровно один раз, то есть не имеют повторов.
[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 для каждого элемента привёл бы к квадратичной сложности.