Вопрос проверяет понимание избыточных вычислений и умение находить возможности для оптимизации алгоритмов.
Потому что большая часть данных в окне не меняется при его сдвиге. При пересчёте среднего повторно суммируются те же элементы, что приводит к лишним операциям. Это увеличивает время выполнения без реальной пользы.
Основная проблема наивного подхода — повторение одинаковых вычислений.
Избыточные вычисления — это повторное выполнение операций над данными, которые не изменились между шагами алгоритма.
один элемент выходит из окна,
один новый элемент входит в окно,
остальные k - 1 элементов остаются прежними.
При полном пересчёте:
повторно суммируются неизменившиеся элементы,
количество операций растёт линейно с размером окна.
# каждый шаг — пересчёт всей суммы
avg = sum(data[i:i+k]) / k
ухудшение масштабируемости,
рост времени выполнения при увеличении окна,
лишняя нагрузка на CPU.
Пересчёт среднего на каждом шаге неэффективен, потому что игнорирует тот факт, что окно меняется минимально. Это и является мотивацией для оптимизированных алгоритмов.