Menu
CoddyTech

Implement Queue Using Stacks

Yalnızca iki yığını depolama alanı olarak kullanan, ilk giren ilk çıkar kuyruğu oluştur. Bir yığın yalnızca en üste bir öğe ekleyebilir, en üstteki öğeyi çıkarabilir, en üstteki öğeyi okuyabilir ve boş olup olmadığını belirtebilir. Kuyruk push x (sona x ekle), pop (öndeki öğeyi çıkarıp döndür), peek (öndeki öğeyi döndür) ve empty (kuyruk boş mu?) işlemlerini destekler.

İşlemler sana sıralı olarak ops biçiminde verilir; args[i], bir push işlemi için değeri, diğer tüm işlemler için 0 değerini içerir. İşlemleri boş başlayan tek bir kuyruk üzerinde çalıştır ve her işlem için bir dize döndür: push için "null", pop veya peek için sayı metin olarak, empty için "true" veya "false".

Fonksiyon

queueOps(ops: string-array, args: integer-array) → string-array
opsstring-array
işlemler, çalıştırıldıkları sırayla
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 metin olarak bir yanıt

Kısıtlar

  • 1 ≤ ops.length ≤ 2000
  • args.length == ops.length
  • Her ops[i], push, pop, peek veya empty değerlerinden biridir.
  • -109 ≤ args[i] ≤ 109 bir push işlemi için, args[i] == 0 ise diğer tüm işlemler için.
  • pop ve peek yalnızca kuyrukta en az bir öğe olduğunda çağrılır.

Örnekler

Girdi
ops = ["push", "push", "peek", "pop", "empty"]args = [1, 2, 0, 0, 0]
Çıktı
["null", "null", "1", "1", "false"]
Açıklama
Önce 1'i, ardından 2'yi ekledikten sonra öndeki değer 1'dir; bu nedenle peek ve pop ikisi de "1" değerini döndürür. 2 hâlâ içeride olduğundan empty, "false" değerini döndürür.

lock iconGönderirken +15 gizli test

challenge icon

Ek soru

Diğerlerinin amortize sınırını bozmadan, en yeni öğeyi O(1) zamanda döndüren bir back işlemini nasıl eklersin?

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

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

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