Menu
CoddyTech

Min Stack

ŚrednieStospython iconjava iconcpp iconc iconjs icon+10

Zaprojektuj stos, który oprócz standardowych operacji push, pop i top potrafi podać najmniejszą przechowywaną wartość za pomocą getMin. Każda z czterech operacji musi działać w czasie O(1).

Otrzymujesz operacje w kolejności w ops, a args[i] zawiera wartość dla operacji push i 0 dla każdej innej operacji. Wykonaj je na jednym stosie, który początkowo jest pusty, i zwróć po jednym ciągu znaków dla każdej operacji: "null" dla push i pop, a liczbę zapisaną jako tekst dla top i getMin.

Funkcja

minStackOps(ops: string-array, args: integer-array) → string-array
opsstring-array
operacje, w kolejności ich wykonywania
argsinteger-array
wartość dla każdego push, 0 dla każdej innej operacji
Zwracastring-array
jedna odpowiedź na operację, jako tekst

Ograniczenia

  • 1 ≤ ops.length ≤ 3000
  • args.length == ops.length
  • Każde ops[i] to push, pop, top lub getMin.
  • -231+1 ≤ args[i] ≤ 231-1 dla operacji push, a args[i] == 0 dla każdej innej operacji.
  • pop, top i getMin są wywoływane tylko wtedy, gdy stos zawiera co najmniej jedną wartość.

Przykłady

Wejście
ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]args = [4, 1, 7, 0, 0, 0, 0, 0]
Wyjście
["null", "null", "null", "1", "null", "1", "null", "4"]
Wyjaśnienie
Stos zawiera kolejno od dołu 4, 1 i 7, więc najmniejsza wartość to 1. Zdjęcie 7 pozostawia 1 na wierzchu. Zdjęcie również 1 pozostawia tylko 4, więc minimum wraca do 4.

lock icon+16 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Czy potrafisz zbudować kolejkę FIFO, która dodatkowo podaje swoją minimalną wartość w zamortyzowanym czasie O(1)?

Zresetuj kod
def minStackOps(ops, args):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

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