Вступить в клуб →
сложнаяpythonСложность и стоимость структур данных

Стоимость операций: свести журнал команд стека к его финальному состоянию

Реализуйте функцию apply_ops(ops), которая проигрывает журнал операций над стеком и возвращает его финальное содержимое.

Вход: ops — список строк. Каждая строка — одна из команд:

  • "push X" — положить целое число X на вершину (X может быть отрицательным);
  • "pop" — снять верхний элемент;
  • "undo" — отменить последнюю изменившую стек команду (push или pop), вернув стек в состояние до неё.

Выход: список целых чисел — содержимое стека от дна к вершине.

Краевые случаи:

  • пустой список команд даёт пустой список [];
  • "pop" на пустом стеке ничего не меняет и не является ошибкой; такая команда считается не изменившей стек, и undo её пропускает, отменяя предыдущую результативную команду;
  • "undo" при отсутствии команд для отмены ничего не меняет и не является ошибкой;
  • сами команды "undo" не отменяются: два подряд "undo" откатывают две последние результативные команды.

Требование по сложности: каждая команда должна обрабатываться за O(1) — нельзя после каждой команды пересобирать стек с нуля, проигрывая весь журнал заново.

Порядок результата важен: первый элемент списка — дно стека.

заготовка решения

def apply_ops(ops):
    # ваш код
    pass

🔒 Проверка ответа — для участников клуба

  • Автотесты прямо в браузере
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела