Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста!! пвп

пвро лор Ученик (84), на голосовании 2 месяца назад
Создай класс StackMax (Стек с максимумом) и реализуй в нем следующие методы:
push(item) – добавляет элемент в стек,
pop() – выводит на экран значение элемента из стека и удаляет его, если стек пуст, то вывести «error»,
size() – выводит на экран размер стека (количество элементов),
get_max() – выводит на экран максимальное значение стека, если стек пуст то вывести None.

Методы size() и get_max() должны выполняться за O(1), для этого вычисление размера стека и максимального элемента стека необходимо производить одновременно с операциями push() и pop().


С клавиатуры вводится одно целое число - количество команд. Затем вводятся сами команды в формате:
push x – команда добавляет элемент в стек и ничего не выводит,
pop – выводит на экран значение элемента стека и удаляет его, если стек пуст, то вывести «error»,
size – выводит на экран размер стека,
get_max – выводит на экран максимальное значение стека, если стек пуст то вывести None.

Входные данные:
Вводится одно целое число n - количество команд, затем n строк с командами.

Выходные данные:
Выводятся строки.

Пример ввода:
9
push 6
get_max
pop
push 5
push 8
size
get_max
pop
get_max


Пример вывода:
6
2
8
5
Голосование за лучший ответ
Павел Щавель Мастер (1642) 3 месяца назад
Лучше наверное не будет готово ✔️ ✔️ ✔️
пвро лорУченик (84) 3 месяца назад
почему?
スネーク フリーフライト Ученик (223) 3 месяца назад
 class StackMax: 
def __init__(self):
self.stack = []
self.max_stack = []

def push(self, item):
self.stack.append(item)
if not self.max_stack or item >= self.max_stack[-1]:
self.max_stack.append(item)

def pop(self):
if not self.stack:
print("error")
return

popped_item = self.stack.pop()
if popped_item == self.max_stack[-1]:
self.max_stack.pop()
print(popped_item)

def size(self):
print(len(self.stack))

def get_max(self):
if not self.stack:
print("None")
return
print(self.max_stack[-1])

n = int(input())

stack_max = StackMax()

for _ in range(n):
command = input().split()
if command[0] == "push":
stack_max.push(int(command[1]))
elif command[0] == "pop":
stack_max.pop()
elif command[0] == "size":
stack_max.size()
elif command[0] == "get_max":
stack_max.get_max()
Похожие вопросы