Ctrl K

Восстановить кольцо битов

Средняя
По кругу записаны n битов (нулей и единиц). Для каждого бита посчитали XOR с его соседом по часовой стрелке: diffs[i] — это XOR i-го бита и (i + 1)-го, а последний бит сравнивается с первым. При n = 1 бит сравнивается сам с собой. Исходные биты потерялись, остался только массив diffs. Верните True, если существует хотя бы одно кольцо битов, дающее ровно такой diffs, иначе False.
Пример 1
diffs=[1, 0, 1] → True

Подходит кольцо [0, 1, 1]: 0 ⊕ 1 = 1, 1 ⊕ 1 = 0, 1 ⊕ 0 = 1.

Пример 2
diffs=[1, 1, 1] → False

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

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

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