Ctrl K
Курс · шаг 16 из 79К шагуДальше

Отрезки с заданной суммой

Средняя
Массив changes — изменения баланса счёта по дням: положительное число — пополнение, отрицательное — списание. Аналитику интересны периоды из нескольких дней подряд, за которые баланс в итоге вырос ровно на total (при отрицательном total — уменьшился). Посчитайте, сколько существует непустых отрезков из подряд идущих элементов changes, сумма которых равна total. Два отрезка считаются разными, если у них отличается начало или конец.
Пример 1
changes=[3, -1, 4, 0, 2], total=6 → 3

Сумму 6 дают три отрезка: [3, -1, 4], [3, -1, 4, 0] и [4, 0, 2]. Отрезки с одинаковыми значениями, но разными границами считаются разными.

Пример 2
changes=[0, 0, 0], total=0 → 6

Любой отрезок из нулей даёт сумму 0: три отрезка длины 1, два длины 2 и один длины 3 — всего 6.

Пример 3
changes=[5, -5, 5], total=5 → 3

Подходят [5] в начале, [5] в конце и весь массив [5, -5, 5]. Отрезки [5, -5] и [-5, 5] дают 0.

Ограничения
  • 1 ≤ changes.length ≤ 2 · 10⁴
  • -1000 ≤ changes[i] ≤ 1000
  • -10⁷ ≤ total ≤ 10⁷
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный отрезок с заданной суммой СредняяОтрезок с суммой, кратной делителю СредняяПоровну орлов и решек СредняяОкна с заданным числом тревог СредняяОтрезки с суммой, кратной числу Средняя
загружаем Python…
Вход
changes=[3, -1, 4, 0, 2], total=6
Ожидается
3

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