Menu
CoddyTech

Implement Queue Using Stacks

ŁatweKolejkaStospython iconjava iconcpp iconc iconjs icon+10

Zbuduj kolejkę FIFO, której jedynym miejscem przechowywania danych są dwa stosy. Stos może jedynie dodawać element na wierzchu, usuwać element z wierzchu, odczytywać element z wierzchu i informować, czy jest pusty. Kolejka obsługuje operacje push x (dodaj x na końcu), pop (usuń i zwróć pierwszy element), peek (zwróć pierwszy element) oraz empty (czy kolejka jest pusta?).

Otrzymujesz operacje w kolejności w postaci ops, a args[i] zawiera wartość dla operacji push i 0 dla każdej innej operacji. Wykonaj je na jednej kolejce, która początkowo jest pusta, i zwróć po jednym ciągu znaków dla każdej operacji: "null" dla operacji push, liczbę zapisaną jako tekst dla operacji pop lub peek oraz "true" albo "false" dla operacji empty.

Funkcja

queueOps(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ę, w postaci tekstu

Ograniczenia

  • 1 ≤ ops.length ≤ 2000
  • args.length == ops.length
  • Każde ops[i] to push, pop, peek lub empty.
  • -109 ≤ args[i] ≤ 109 w przypadku operacji push, a args[i] == 0 w przypadku każdej innej operacji.
  • pop i peek są wywoływane tylko wtedy, gdy kolejka zawiera co najmniej jeden element.

Przykłady

Wejście
ops = ["push", "push", "peek", "pop", "empty"]args = [1, 2, 0, 0, 0]
Wyjście
["null", "null", "1", "1", "false"]
Wyjaśnienie
Po wstawieniu 1, a następnie 2, na początku znajduje się 1, więc zarówno peek, jak i pop zwracają "1". 2 nadal znajduje się w środku, więc empty zwraca "false".

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

challenge icon

Pytanie dodatkowe

Jak dodać operację back, która zwraca najnowszy element w czasie O(1), nie naruszając zamortyzowanej granicy pozostałych operacji?

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

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

ops = ["push", "push", "peek", "pop", "empty"]
args = [1, 2, 0, 0, 0]

Oczekiwane

["null", "null", "1", "1", "false"]