Menu
CoddyTech

Min Stack

OrtaYığınpython iconjava iconcpp iconc iconjs icon+10

Alışılmış push, pop ve top işlemlerinin yanı sıra tuttuğu en küçük değeri getMin ile bildirebilen bir yığın tasarla. Dört işlemin her biri O(1) zamanda çalışmalıdır.

İşlemler sana sırasıyla ops olarak verilir; args[i], bir push için değeri, diğer tüm işlemler içinse 0 değerini içerir. İşlemleri başlangıçta boş olan tek bir yığında çalıştır ve her işlem için bir dize döndür: push ve pop için "null", top ve getMin içinse sayı metin olarak döndürülür.

Fonksiyon

minStackOps(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 bir yanıt, metin olarak

Kısıtlar

  • 1 ≤ ops.length ≤ 3000
  • args.length == ops.length
  • Her ops[i], push, pop, top veya getMin değerlerinden biridir.
  • -231+1 ≤ args[i] ≤ 231-1 için push işlemi, diğer tüm işlemler için args[i] == 0.
  • pop, top ve getMin yalnızca yığında en az bir değer bulunduğunda çağrılır.

Örnekler

Girdi
ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]args = [4, 1, 7, 0, 0, 0, 0, 0]
Çıktı
["null", "null", "null", "1", "null", "1", "null", "4"]
Açıklama
Yığın, alttan üste doğru 4, 1 ve 7 değerlerini tutar; bu nedenle en küçüğü 1'dir. 7'yi çıkarmak, 1'i en üstte bırakır. 1'i de çıkarmak yalnızca 4'ü bırakır, bu yüzden minimum değer yeniden 4 olur.

lock iconGönderirken +16 gizli test

challenge icon

Ek soru

Amortize O(1) zamanda minimum değerini de bildiren, ilk giren ilk çıkar kuyruğu oluşturabilir misin?

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

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

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