Ctrl K

Единицы на кольце

Средняя
Массив ring из нулей и единиц замкнут в кольцо: последний элемент считается соседом первого. За один обмен можно поменять местами значения в любых двух разных позициях. Найдите наименьшее число обменов, после которых все единицы займут непрерывную дугу кольца — то есть будут стоять подряд, возможно, «перескакивая» через стык конца и начала массива.
Пример 1
ring=[1, 0, 0, 1, 0, 1] → 1

Массив замкнут в кольцо, поэтому последний элемент соседствует с первым. Единицы на местах 5 и 0 уже рядом; единицу с места 3 переставляем на место 4 одним обменом — получается блок 4, 5, 0.

Пример 2
ring=[0, 1, 0, 1, 0, 1, 0, 1] → 2

Четыре единицы через одну. Любая дуга из четырёх клеток содержит ровно две единицы, значит две недостающие придётся принести двумя обменами.

Пример 3
ring=[1, 1, 0, 0, 1] → 0

По кругу единицы уже стоят подряд: 4, 0, 1.

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

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