Ctrl K

Суммы ступенчатых отрезков

Средняя
Назовём отрезок массива **ступенчатым**, если каждый следующий элемент ровно на 1 больше предыдущего, или каждый следующий ровно на 1 меньше предыдущего. Отрезок из одного элемента тоже ступенчатый. Дан массив values. Найдите сумму элементов всех ступенчатых отрезков (непрерывных подмассивов), сложенную вместе. Ответ может быть большим — верните его по модулю 10⁹ + 7. Перебор всех отрезков слишком медленный — нужно O(n).
Пример 1
values=[4, 5, 6] → 50

Подходят [4], [5], [6], [4, 5], [5, 6], [4, 5, 6]. Суммы: 4 + 5 + 6 + 9 + 11 + 15 = 50.

Пример 2
values=[3, 2, 2, 3] → 20

Кроме одиночных элементов (сумма 10) подходят [3, 2] (шаг −1) и [2, 3] (шаг +1): 10 + 5 + 5 = 20. Кусок [2, 2] не подходит — шаг 0.

Пример 3
values=[10, 30] → 40

Подходят только одиночные элементы: 10 + 30 = 40.

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

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