Ctrl K

Окно без конфликтующих флагов

Средняя
В массиве flags хранятся битовые маски настроек: каждое положительное число — набор включённых флагов. Назовём непрерывный отрезок массива *бесконфликтным*, если никакие два его элемента не включают один и тот же флаг, то есть побитовое И любых двух чисел с разными позициями в отрезке равно 0. Отрезок из одного элемента всегда бесконфликтный. Верните длину самого длинного бесконфликтного отрезка.
Пример 1
flags=[6, 1, 8, 16, 4, 2] → 5

Окно [1, 8, 16, 4, 2] — у всех чисел разные биты, длина 5. Число 6 (биты 2 и 4) конфликтует с 4 и 2, поэтому всё окно взять нельзя.

Пример 2
flags=[5, 7, 3] → 1

Любые два соседних числа имеют общий бит 1, так что подойдёт только окно из одного числа.

Ограничения
  • 1 ≤ len(flags) ≤ 10⁵
  • 1 ≤ flags[i] < 2³¹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКратчайший отрезок с полным OR СредняяКороткое окно с большим OR СредняяГирлянда из трёх ламп СредняяЗажечь все лампы окном СложнаяXOR близкой пары Лёгкая
загружаем Python…
Вход
flags=[6, 1, 8, 16, 4, 2]
Ожидается
5

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