Ctrl K

Строго низко — высоко

Средняя
Дан массив целых чисел values. Переставьте его элементы так, чтобы они строго чередовались «низко — высоко»: values[0] < values[1] > values[2] < values[3] > values[4] < … Гарантируется, что такая перестановка существует. Если подходящих вариантов несколько, годится любой. Верните переставленный массив. Решение через сортировку работает за O(n log n). Получится ли за O(n) по времени и с O(1) дополнительной памяти?
Пример 1
values=[2, 2, 4, 1, 3, 3] → [2, 4, 2, 3, 1, 3]

Например, [2, 4, 2, 3, 1, 3]: 2 < 4 > 2 < 3 > 1 < 3. Соседние элементы никогда не равны.

Пример 2
values=[6, 5, 5, 4] → [5, 6, 4, 5]

Две пятёрки нельзя ставить рядом. Подходит, например, [5, 6, 4, 5]: 5 < 6 > 4 < 5.

Пример 3
values=[9] → [9]
Ограничения
  • 1 ≤ len(values) ≤ 5·10⁴
  • 0 ≤ values[i] ≤ 5000
  • Строгое чередование для входа существует
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиK-й результат сверху СредняяСамые частые значения СредняяБлижайшие к базе точки СредняяK-й по величине XOR угла СредняяK-е по величине длинное число Средняя
загружаем Python…
Вход
values=[2, 2, 4, 1, 3, 3]
Ожидается
[2, 4, 2, 3, 1, 3]

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