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
Голосование за лучший ответ
dewian Мыслитель (6695) 3 месяца назад
 Класс StackMax, реализующий указанные методы, может выглядеть следующим образом на языке Python: 

python
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
item = self.stack.pop()
if item == self.max_stack[-1]:
self.max_stack.pop()
print(item)

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

def get_max(self):
if not self.stack:
print('None')
else:
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()


Пример ввода:

9
push 6
get_max
pop
push 5
push 8
size
get_max
pop
get_max


Пример вывода:

6
8
2
5
6
пвро лорУченик (84) 3 месяца назад
что делать с пример вывода?
dewian Мыслитель (6695) пвро лор, Ничего не делай, это просто пример, его не надо копировать
пвро лорУченик (84) 3 месяца назад
я бездарь, можешь помочь? написать код? по-братски
Похожие вопросы