Ctrl K

Лидеры списка

Средняя
Дан односвязный список head. Назовём узел *лидером*, если ни один узел правее него (ближе к концу списка) не хранит строго большее значение. Удалите из списка все узлы, которые не являются лидерами, сохранив порядок оставшихся, и верните голову получившегося списка. Последний узел всегда лидер, поэтому результат не бывает пустым.
Пример 1
head=list_node([4, 7, 2, 6, 3]) → [7, 6, 3]

4 удаляется (правее есть 7), 2 удаляется (правее есть 6). Остаются 7, 6 и 3: правее каждого из них больших чисел нет.

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

Обе двойки удаляются из-за пятёрок. Пятёрки остаются: равное значение — не большее.

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

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