Ctrl K

Собрать единицы вместе

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

Единиц три. Если поменять местами bits[3] и bits[5], получится [0, 1, 1, 1, 0, 0, 0] — хватает одного обмена.

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

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

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

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