Ctrl K

Максимум в скользящем окне

Сложная
Датчик раз в час записывает температуру, получился массив temps. Для отчёта нужно взять окно из width подряд идущих замеров, поставить его в начало массива и сдвигать вправо на один замер, пока оно не упрётся в конец. Для каждого положения окна найдите самую высокую температуру внутри него. Верните эти значения в порядке сдвига окна — всего их len(temps) - width + 1.
Пример 1
temps=[2, 7, 3, -1, 4, 4, 0], width=3 → [7, 7, 4, 4, 4]

Окна: [2, 7, 3] → 7, [7, 3, -1] → 7, [3, -1, 4] → 4, [-1, 4, 4] → 4, [4, 4, 0] → 4.

Пример 2
temps=[-5, -2, -8], width=1 → [-5, -2, -8]

Окно из одного замера — сам замер.

Пример 3
temps=[6, 1, 9, 2], width=4 → [9]

Окно одно, на весь массив; максимум 9.

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

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