Реализуйте стек, который поддерживает операции push, pop, top и getMin за O(1).
На вход подаётся список операций. Каждая операция — список:
- ["push", x] — положить x в стек
- ["pop"] — удалить верхний элемент
- ["top"] — вернуть верхний элемент
- ["getMin"] — вернуть минимальный элемент в стеке
Верните список результатов для операций top и getMin. Операции push и pop не возвращают значение.
def min_stack_operations(ops: list[list]) -> list:
min_stack_operations([["push", -2], ["push", 0], ["push", -3], ["getMin"], ["pop"], ["top"], ["getMin"]])
→ [-3, 0, -2]
- 1 ≤ len(ops) ≤ 3 × 10⁴
- -2³¹ ≤ val ≤ 2³¹ - 1
- pop, top, getMin вызываются только на непустом стеке
ops = [["push",-2],["push",0],["push",-3],["getMin"],["pop"],["top"],["getMin"]][-3,0,-2]ops = [["push",1],["push",2],["top"],["getMin"]][2,1]ops = [["push",5],["push",3],["push",7],["getMin"],["pop"],["pop"],["getMin"]][3,5]