Ctrl K

Снять с краёв ровно столько

Средняя
На полке в ряд стоят коробки, их веса — массив weights. За один ход можно снять крайнюю коробку — самую левую или самую правую. Нужно снять коробки общим весом ровно target. Верните наименьшее число ходов, за которое это можно сделать, или -1, если набрать ровно target нельзя.
Пример 1
weights=[3, 1, 7, 2, 2], target=6 → 3

Снимаем 3 и 1 слева и 2 справа: 3 + 1 + 2 = 6 — три хода. Меньшим числом ходов ровно 6 не набрать.

Пример 2
weights=[4, 9, 4], target=5 → -1

С краёв можно набрать 4, 8, 13, 17, но никак не 5.

Пример 3
weights=[2, 5, 1], target=8 → 3
Ограничения
  • 1 ≤ len(weights) ≤ 10⁵
  • 1 ≤ weights[i] ≤ 10⁴
  • 1 ≤ target ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый короткий рывок СредняяОтрезки с маленьким произведением СредняяОкна с заданным числом тревог СредняяСамая длинная серия единиц с k правками СредняяОтрезки с k нечётными Средняя
загружаем Python…
Вход
weights=[3, 1, 7, 2, 2], target=6
Ожидается
3

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