Ctrl K

Лесенки в окнах: длинный массив

Средняя
Дан массив values и длина окна size. Назовём отрезок подряд идущих элементов **лесенкой**, если каждый следующий элемент ровно на 1 больше предыдущего, например [7, 8, 9]. Для каждого окна из size подряд идущих элементов, слева направо, запишите его последний (наибольший) элемент, если окно — лесенка, и -1 иначе. Верните полученный массив длины len(values) - size + 1. Массив длинный, а окно может быть большим: проверять каждое окно заново слишком медленно.
Пример 1
values=[4, 5, 6, 7, 5, 6], size=3 → [6, 7, -1, -1]

Окна: [4, 5, 6] → 6, [5, 6, 7] → 7, [6, 7, 5] и [7, 5, 6] не лесенки → -1.

Пример 2
values=[3, 3, 4], size=2 → [-1, 4]

[3, 3] — шаг 0, а не +1, поэтому -1; [3, 4] — лесенка с вершиной 4.

Пример 3
values=[9, 8, 7], size=1 → [9, 8, 7]

Окно из одного числа всегда лесенка, ответ — сами числа.

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

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