Menu
CoddyTech

Min Stack

SedangStackpython iconjava iconcpp iconc iconjs icon+10

Rancang sebuah stack yang, selain operasi umum push, pop, dan top, dapat melaporkan nilai terkecil yang disimpannya dengan getMin. Keempat operasi harus berjalan dalam waktu O(1).

Kamu mendapatkan operasi secara berurutan dalam ops, dengan args[i] menyimpan nilai untuk operasi push dan 0 untuk setiap operasi lainnya. Jalankan operasi tersebut pada satu stack yang awalnya kosong, lalu kembalikan satu string untuk setiap operasi: "null" untuk push dan pop, serta angka dalam bentuk teks untuk top dan getMin.

Fungsi

minStackOps(ops: string-array, args: integer-array) → string-array
opsstring-array
operasi-operasi, sesuai urutan dijalankannya
argsinteger-array
nilai untuk setiap push, 0 untuk setiap operasi lainnya
Mengembalikanstring-array
satu jawaban untuk setiap operasi, sebagai teks

Batasan

  • 1 ≤ ops.length ≤ 3000
  • args.length == ops.length
  • Setiap ops[i] adalah push, pop, top, atau getMin.
  • -231+1 ≤ args[i] ≤ 231-1 untuk operasi push, dan args[i] == 0 untuk operasi lainnya.
  • pop, top, dan getMin hanya dipanggil saat stack menyimpan setidaknya satu nilai.

Contoh

Input
ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]args = [4, 1, 7, 0, 0, 0, 0, 0]
Output
["null", "null", "null", "1", "null", "1", "null", "4"]
Penjelasan
Stack menyimpan 4, 1, dan 7 dari bawah ke atas, jadi nilai terkecilnya adalah 1. Mengeluarkan 7 menyisakan 1 di bagian atas. Mengeluarkan 1 juga hanya menyisakan 4, sehingga nilai minimum kembali menjadi 4.
challenge icon

Pertanyaan lanjutan

Bisakah kamu membuat queue first in, first out yang juga melaporkan nilai minimumnya dalam waktu amortisasi O(1)?

Reset kode
def minStackOps(ops, args):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

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