Рубрики
Без рубрики

Сегодня я узнал: Min-Max Stage

Заявление о проблеме Написать класс MinmaxStack для Min-Max Stack с этими функциями: PU … Помечено Python, алгоритмы, начинающие, WebDev.

Напишите класс MinmaxStack для Min-Max Stack с этими функциями:

  • Выдвижение и поп-значений из стека.
  • Peek Value в верхней части стека.
  • Получите текущие мин и максимальное значение стека в постоянное время.
stack = MinMaxStack()
stack.push(5) # min: 5, max: 5, current value: 5
stack.push(7) # min: 5, max: 7, current value: 7
stack.push(2) # min: 2, max: 7, current value: 2
stack.pop(2) 
stack.pop(7) # min: 5, max: 5, current value: 5
class MinMaxStack:
    def __init__(self):
        self.stack = []

    def peek(self):
        if len(self.stack) == 0:
            return None
        else:
            return self.stack[len(self.stack) - 1]['value']

    def pop(self):
        if len(self.stack) == 0:
            return None
        else:
            return self.stack.pop()['value']

    def push(self, number):
        self.stack.append(
            {
                'value': number,
                'min': self._calc_min(number),
                'max': self._calc_max(number)
            }
        )

    def get_min(self):
        if len(self.stack) == 0:
            return None
        else:
            return self.stack[len(self.stack) - 1]['min']

    def get_max(self):
        if len(self.stack) == 0:
            return None
        else:
            return self.stack[len(self.stack) - 1]['max']

    def _calc_min(self, number):
        if len(self.stack) == 0:
            return number
        elif number < self.stack[len(self.stack) - 1]['min']:
            return number
        else:
            return self.stack[len(self.stack) - 1]['min']

    def _calc_max(self, number):
        if len(self.stack) == 0:
            return number
        elif number > self.stack[len(self.stack) - 1]['max']:
            return number
        else:
            return self.stack[len(self.stack) - 1]['max']


  • Храните текущие, мин и максимальное значение значения во время POP и Push.

Оригинал: “https://dev.to/anzhari/today-i-learned-min-max-stack-26f5”