Menu
CoddyTech

Implement Stack using Queues

Yalnızca kuyrukları depolama olarak kullanan, son giren ilk çıkar yığını oluşturun. Bir kuyruk yalnızca sona öğe ekleyebilir, öndeki öğeyi kaldırabilir veya okuyabilir ve boyutunu bildirebilir. Yığın push x (x'i üste koy), pop (üstteki öğeyi kaldırıp döndür), top (üstteki öğeyi döndür ve yığında tut) ve empty (yığın boş mu?) işlemlerini destekler.

İşlemler ops içinde sırayla gelir; args[i], bir push için değeri, aksi durumda 0 değerini tutar. İşlemleri boş bir yığın üzerinde çalıştırın ve her işlem için bir dize döndürün: push için "null", pop veya top için metin olarak sayı ve empty için "true" ya da "false".

Fonksiyon

stackOps(ops: string-array, args: integer-array) → string-array
opsstring-array
işlemler, çalıştırılma sırasına göre
argsinteger-array
her push işlemi için değer, diğer tüm işlemler için 0
Döndürürstring-array
işlem başına bir yanıt, metin olarak

Kısıtlar

  • 1 ≤ ops.length ≤ 1000
  • args.length == ops.length
  • Her ops[i], push, pop, top veya empty değerlerinden biridir.
  • -109 ≤ args[i] ≤ 109 bir push işlemi için, diğer herhangi bir işlem için args[i] == 0.
  • pop ve top yalnızca yığında en az bir öğe bulunduğunda çağrılır.

Örnekler

Girdi
ops = ["push", "push", "top", "pop", "empty"]args = [1, 2, 0, 0, 0]
Çıktı
["null", "null", "2", "2", "false"]
Açıklama
2 en son girdi, bu yüzden en üstte: top ve pop ikisi de "2" değerini döndürür. 1 hâlâ içeride, bu yüzden empty "false" değerini döndürür.
challenge icon

Ek soru

Tek bir kuyruğu koruyup işi push işleminden pop işlemine taşıyarak push işlemini O(1) yapabilir misin?

Kodu sıfırla
def stackOps(ops, args):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

["null", "null", "2", "2", "false"]