Menu
CoddyTech

Min Stack

СреднеСтекpython iconjava iconcpp iconc iconjs icon+10

Разработайте стек, который, помимо обычных операций push, pop и top, может сообщать наименьшее хранящееся в нём значение с помощью getMin. Каждая из четырёх операций должна выполняться за время O(1).

Вам заданы операции в порядке выполнения в ops, где args[i] содержит значение для операции push, а для любой другой операции — 0. Выполните их на одном стеке, изначально пустом, и верните по одной строке для каждой операции: "null" для push и pop, а для top и getMin — число в виде текста.

Функция

minStackOps(ops: string-array, args: integer-array) → string-array
opsstring-array
операции в порядке их выполнения
argsinteger-array
значение для каждой операции push, 0 для всех остальных операций
Возвращаетstring-array
один ответ для каждой операции в виде текста

Ограничения

  • 1 ≤ ops.length ≤ 3000
  • args.length == ops.length
  • Каждое значение ops[i] — это push, pop, top или getMin.
  • -231+1 ≤ args[i] ≤ 231-1 при добавлении в стек, а для любой другой операции — args[i] == 0.
  • pop, top и getMin вызываются только тогда, когда стек содержит как минимум одно значение.

Примеры

Ввод
ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]args = [4, 1, 7, 0, 0, 0, 0, 0]
Вывод
["null", "null", "null", "1", "null", "1", "null", "4"]
Пояснение
В стеке снизу вверх находятся 4, 1 и 7, поэтому наименьшее число — 1. После извлечения 7 сверху остаётся 1. Если извлечь и 1, останется только 4, поэтому минимум снова станет равен 4.

lock icon+16 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Можешь ли ты создать очередь, работающую по принципу «первым пришёл — первым вышел», которая также сообщает своё минимальное значение за амортизированное время O(1)?

Сбросить код
def minStackOps(ops, args):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]
args = [4, 1, 7, 0, 0, 0, 0, 0]

Ожидается

["null", "null", "null", "1", "null", "1", "null", "4"]