Ctrl K

От порядка по модулю к порядку по значению

Средняя
Дан первый узел head непустого односвязного списка. Значения в нём идут по неубыванию **модулей**: например, 0, 2, -3, 3, -8. Перестройте список так, чтобы значения шли по неубыванию самих значений, и верните его первый узел. Простое решение — отсортировать за O(n log n). Попробуйте за O(n), пользуясь тем, как устроен входной список.
Пример 1
head=list_node([1, -2, 3, -3, -7]) → [-7, -3, -2, 1, 3]

По модулю список упорядочен: 1, 2, 3, 3, 7. По самим значениям порядок такой: -7, -3, -2, 1, 3.

Пример 2
head=list_node([0, 4, 4]) → [0, 4, 4]

Отрицательных значений нет — список уже упорядочен.

Пример 3
head=list_node([-6]) → [-6]
Ограничения
  • В списке от 1 до 10⁵ узлов
  • -5000 ≤ Node.val ≤ 5000
  • Модули значений идут по неубыванию
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСортировка связного списка СредняяТройки с нулевой суммой СредняяСумма тройки ближе всего к цели СредняяЧетыре числа с заданной суммой СредняяУбрать k-й узел с конца Средняя
загружаем Python…
Вход
head=list_node([1, -2, 3, -3, -7])
Ожидается
[-7, -3, -2, 1, 3]

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