Ctrl K

Самый короткий рывок

Средняя
Бегун ведёт дневник: steps[i] — сколько километров он пробежал в i-й день, все значения положительные. Тренер хочет найти самый короткий отрезок из идущих подряд дней, за который набралось не меньше goal километров. Верните длину такого отрезка в днях. Если даже за все дни вместе набралось меньше goal, верните 0. Если получилось решение за O(n), попробуйте найти и решение за O(n log n).
Пример 1
goal=10, steps=[3, 1, 6, 2, 5, 4] → 3

Подряд идущие дни [6, 2, 5] дают 13 ≥ 10 — это 3 дня. Двух дней не хватит ни в одном месте: самая большая пара — 5 + 4 = 9.

Пример 2
goal=8, steps=[2, 9, 1] → 1

Одного дня с 9 уже хватает.

Пример 3
goal=20, steps=[4, 4, 4] → 0

Даже все дни вместе дают только 12, поэтому ответ 0.

Ограничения
  • 1 ≤ goal ≤ 10^9
  • 1 ≤ steps.length ≤ 10^5
  • 1 ≤ steps[i] ≤ 10^4
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОтрезки с маленьким произведением СредняяСамая длинная серия единиц с k правками СредняяСнять с краёв ровно столько СредняяПодравнять числа прибавлением СредняяКовёр на окрашенные отрезки Средняя
загружаем Python…
Вход
goal=10, steps=[3, 1, 6, 2, 5, 4]
Ожидается
3

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