Один раз вычислите общую сумму и для каждого элемента вычтите его значение. Для целых чисел это даёт результат за O(n) времени без повторного суммирования остальных элементов.
Реализуйте функцию: для каждого элемента списка вернуть сумму всех остальных элементов.
Один раз вычислите общую сумму и для каждого элемента вычтите его значение. Для целых чисел это даёт результат за O(n) времени без повторного суммирования остальных элементов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Один раз вычислите общую сумму и для каждого элемента вычтите его значение. Для целых чисел это даёт результат за O(n) времени без повторного суммирования остальных элементов.
def sum_others(values):
total = sum(values)
return [total - value for value in values]
print(sum_others([1, 2, 3])) # [5, 4, 3]
Пустой список даёт пустой результат, один элемент — [0]. Дополнительная память O(n) нужна для результата. Алгоритм предполагает обычные числовые значения; для float порядок вычислений и погрешность могут отличаться от отдельного суммирования каждого поднабора, особенно при NaN и бесконечностях.