Ctrl K

Разрез с тем же лидером

Средняя
Назовём **лидером** списка значение, которое занимает строго больше половины его позиций. Не у каждого списка есть лидер, но у данного списка votes он есть. Список можно разрезать после индекса i на две непустые части: votes[0..i] и votes[i+1..]. Разрез хороший, если у обеих частей есть лидер и он один и тот же. Верните наименьший индекс i, после которого разрез хороший, или -1, если хорошего разреза нет.
Пример 1
votes=[5, 4, 4, 5, 4, 4] → 2

Разрез после индекса 2 даёт [5, 4, 4] и [5, 4, 4]: в обеих частях 4 занимает 2 места из 3. Разрезы после индексов 0 и 1 не подходят: в [5] лидер 5, а в [5, 4] лидера нет.

Пример 2
votes=[2, 2, 2, 3, 3] → -1

Справа от любого разреза двоек не больше половины, так что подходящего разреза нет.

Пример 3
votes=[9] → -1

Из одного элемента две непустые части не получить.

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

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