Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Math: running, sum, constant

Какой подход позволяет обновлять среднее при сдвиге окна за O(1)?

Вопрос проверяет знание ключевого приёма, лежащего в основе эффективных оконных алгоритмов.

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

Используется подход с накопленной суммой окна. При каждом сдвиге из суммы вычитается элемент, вышедший из окна, и добавляется новый. Среднее затем считается за константное время. Все операции выполняются за O(1) на шаг.

Длинный ответ

Обновление среднего за O(1) — ключевое свойство эффективного скользящего окна.

Определение

Обновление за O(1) — это выполнение фиксированного числа операций независимо от размера окна.

Как это работает

Алгоритм хранит:

  • текущую сумму окна,

  • размер окна k.

При каждом сдвиге:

  1. window_sum -= outgoing_element

  2. window_sum += incoming_element

  3. average = window_sum / k

Пример

window_sum += data[right]
window_sum -= data[left]
average = window_sum / k

Почему это эффективно

  • нет вложенных циклов,

  • нет повторных суммирований,

  • минимальное число операций.

Где используется

  • обработка потоков данных,

  • временные ряды,

  • real-time аналитика.

Вывод

Подход с накопленной суммой позволяет обновлять среднее при сдвиге окна за O(1) и является стандартным решением для оконных алгоритмов.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Math

    Math

Ключевые слова

#running

#sum

#constant

Подпишись на Python Developer в телеграм