Ctrl K

Обмен соседей с равными битами

Средняя
Дан список положительных чисел values. За один ход можно поменять местами два соседних элемента, но только если в их двоичной записи одинаковое количество единиц. Ходов можно делать сколько угодно, в том числе ни одного. Верните True, если такими ходами список можно отсортировать по неубыванию, и False иначе.
Пример 1
values=[6, 3, 5, 16, 8] → True

У 6, 3 и 5 по две единицы в двоичной записи (110, 11, 101), их можно переставить в 3, 5, 6. У 16 и 8 по одной единице, их тоже можно поменять. Получится [3, 5, 6, 8, 16].

Пример 2
values=[4, 3, 8] → False

4 и 3 надо поменять местами, но у 4 одна единица, а у 3 две — так нельзя.

Пример 3
values=[10] → True
Ограничения
  • 1 ≤ len(values) ≤ 100
  • 1 ≤ values[i] ≤ 2¹⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиK-й по величине XOR угла СредняяПлюс одна буква СредняяСамая сильная команда СредняяПотерянный билет ЛёгкаяДвойная бирка и пропавшая Лёгкая
загружаем Python…
Вход
values=[6, 3, 5, 16, 8]
Ожидается
True

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