Ctrl K

Полосатые отрезки на браслете

Средняя
Браслет — это кольцо из бусин двух цветов: beads[i] равно 0 или 1. Бусина с номером n - 1 соседствует с бусиной 0. Назовём отрезок из length подряд идущих бусин (по кругу) полосатым, если любые две соседние бусины в нём разного цвета. Посчитайте, сколько существует полосатых отрезков длины length. Отрезки, которые начинаются с разных бусин, считаются разными.
Пример 1
beads=[1, 0, 1, 1, 0, 1], length=3 → 2

Чередуются только отрезки, начинающиеся с позиций 0 и 3 (оба 1, 0, 1); в остальных тройках есть две одинаковые соседние бусины.

Пример 2
beads=[0, 1, 0, 1], length=4 → 4

Бусины чередуются по всему кругу, включая стык последней и первой, поэтому подходит отрезок от каждой из 4 позиций.

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

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