Назад к задачам
Junior — Senior
7

Определение текущего минимума в стеке

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В стек последовательно помещаются элементы: 3 4 2 5 1. После этого вызываются методы: get_min(), pop(), get_min() и так далее. Нужно проанализировать предложенную реализацию и выяснить, будет ли метод get_min() возвращать корректное значение после того, как минимальный элемент будет удалён из стека.

class Stack:
    def __init__(self):
        self.stack = []
        self.min_val_initial = 3

    def push(self, num: int):
        self.stack.append(num)
        self.min_val = min(self.min_val, num)

    def pop(self):
        return self.stack.pop()

    def top(self):
        return self.stack[-1]

    def get_min(self):
        ...

В описании следует указать, что текущий код хранит только одно значение минимального элемента (self.min_val) и не обновляет его при удалении элементов из стека. Поэтому после выполнения pop(), если удалённый элемент был минимумом, метод get_min() будет возвращать устаревшее значение, что делает его работу некорректной.