Menu
CoddyTech

Implement Stack using Queues

MudahQueueStackpython iconjava iconcpp iconc iconjs icon+10

Buat stack last in, first out yang hanya menggunakan queue untuk menyimpan data. Queue hanya boleh menambahkan item di bagian belakang, menghapus atau membaca item di bagian depan, dan melaporkan ukurannya. Stack mendukung push x (menaruh x di bagian atas), pop (menghapus dan mengembalikan item teratas), top (mengembalikan item teratas dan menyimpannya) dan empty (apakah stack kosong?).

Operasi disediakan secara berurutan dalam ops, dengan args[i] berisi nilai untuk push dan 0 untuk operasi lainnya. Jalankan operasi tersebut pada satu stack kosong dan kembalikan satu string untuk setiap operasi: "null" untuk push, angka dalam bentuk teks untuk pop atau top, dan "true" atau "false" untuk empty.

Fungsi

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

Batasan

  • 1 ≤ ops.length ≤ 1000
  • args.length == ops.length
  • Setiap ops[i] adalah push, pop, top, atau empty.
  • -109 ≤ args[i] ≤ 109 untuk operasi push, dan args[i] == 0 untuk operasi lainnya.
  • pop dan top hanya dipanggil saat stack menyimpan setidaknya satu item.

Contoh

Input
ops = ["push", "push", "top", "pop", "empty"]args = [1, 2, 0, 0, 0]
Output
["null", "null", "2", "2", "false"]
Penjelasan
2 masuk terakhir, jadi berada di paling atas: top dan pop sama-sama mengembalikan "2". 1 masih ada di dalam, jadi empty mengembalikan "false".
challenge icon

Pertanyaan lanjutan

Bisakah kamu mempertahankan satu queue, tetapi memindahkan pekerjaan dari push ke pop agar push berkompleksitas O(1)?

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

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

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