Ctrl K

Чётные налево

Лёгкая
На складе в ряд стоят коробки, на каждой написано число: boxes[i]. Робот-сортировщик должен поставить все коробки с чётными номерами левее всех коробок с нечётными. Работает он двумя захватами. Левый захват начинает с первой коробки, правый — с последней. Пока левый захват левее правого, робот делает одно из трёх: - если под левым захватом чётная коробка, левый захват сдвигается на одну позицию вправо; - иначе, если под правым захватом нечётная коробка, правый захват сдвигается на одну позицию влево; - иначе робот меняет две коробки местами, и оба захвата делают по шагу навстречу друг другу. Когда захваты встретились или разошлись, робот останавливается. Верните ряд коробок в том виде, в каком его оставит робот. Попробуйте обойтись без дополнительного массива.
Пример 1
boxes=[7, 2, 5, 8, 4] → [4, 2, 8, 5, 7]

Левый захват стоит на 7 (нечётное), правый — на 4 (чётное): меняем их, получаем [4, 2, 5, 8, 7]. Дальше левый проходит 2 и встаёт на 5, правый встаёт на 8 — снова обмен: [4, 2, 8, 5, 7]. Захваты встретились, робот остановился.

Пример 2
boxes=[3, 1, 6] → [6, 1, 3]

Меняются 3 и 6, после этого захваты сходятся: [6, 1, 3].

Пример 3
boxes=[10] → [10]
Ограничения
  • 1 ≤ len(boxes) ≤ 5000
  • 0 ≤ boxes[i] ≤ 5000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСлияние в запасной хвост ЛёгкаяЗначения в обоих списках ЛёгкаяОбщие значения с повторами ЛёгкаяКуски торта для гостей ЛёгкаяЧётность на своих местах Лёгкая
загружаем Python…
Вход
boxes=[7, 2, 5, 8, 4]
Ожидается
[4, 2, 8, 5, 7]

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