Ctrl K

Лучшее окно по среднему

Лёгкая
Датчик записал ряд показаний readings — целые числа. Нужно выбрать width подряд идущих показаний так, чтобы их среднее арифметическое было как можно больше, и вернуть это среднее. Ответ принимается, если он отличается от точного не больше чем на 10⁻⁵. Перебор всех окон с пересчётом суммы заново займёт O(n · width) — постарайтесь за O(n).
Пример 1
readings=[3, -2, 7, 8, -1, 4], width=3 → 4.666666666666667

Окна длины 3: [3, -2, 7] → 8, [-2, 7, 8] → 13, [7, 8, -1] → 14, [8, -1, 4] → 11. Лучшая сумма 14, среднее 14 / 3 ≈ 4.66667.

Пример 2
readings=[-6, -4, -9], width=2 → -5.0

Все значения отрицательные: лучшее окно [-6, -4], его среднее -5.0.

Пример 3
readings=[10], width=1 → 10.0
Ограничения
  • 1 ≤ width ≤ len(readings) ≤ 10⁵
  • -10⁴ ≤ readings[i] ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПовтор в пределах окна ЛёгкаяСоседние значения ЛёгкаяОчки за шаги ЛёгкаяСуммы соседей по кругу ЛёгкаяСамая ровная группа по баллам Лёгкая
загружаем Python…
Вход
readings=[3, -2, 7, 8, -1, 4], width=3
Ожидается
4.666666666666667

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 97 тестов на сервере, включая скрытые.