Ctrl K

Непересекающиеся отрезки с заданной суммой

Средняя
Дан массив целых чисел values и число goal. Отрезком называется непустой кусок массива из подряд идущих элементов. Выберите как можно больше отрезков так, чтобы сумма каждого была ровно goal и никакие два отрезка не имели общих элементов. Верните количество выбранных отрезков. Элементы, не попавшие ни в один отрезок, просто остаются в стороне.
Пример 1
values=[2, 4, -1, 3, 3, 1, 5], goal=6 → 3

Сумму 6 дают, например, отрезки [2, 4], [4, -1, 3], [3, 3] и [1, 5]. Без пересечений можно взять [2, 4], [3, 3] и [1, 5] — три отрезка.

Пример 2
values=[3, 3, 3, 3, 3], goal=9 → 1

Любые три подряд идущих тройки дают 9, но в массиве всего пять элементов, так что непересекающийся отрезок помещается только один.

Пример 3
values=[0, 5, 0], goal=0 → 2

Каждый ноль сам по себе — отрезок с суммой 0.

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

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