Menu
CoddyTech

Implement Queue Using Stacks

やさしいキュースタックpython iconjava iconcpp iconc iconjs icon+10

2つのスタックだけを使って、先入れ先出しのキューを実装してください。スタックでは、アイテムを一番上に追加する、一番上のアイテムを取り出す、一番上のアイテムを読み取る、空かどうかを確認する操作だけができます。キューは、push x(末尾にxを追加)、pop(先頭のアイテムを取り出して返す)、peek(先頭のアイテムを返す)、empty(キューが空かどうかを返す)をサポートします。

操作は順番にopsとして与えられます。args[i]には、pushの場合は値が、それ以外のすべての操作の場合は0が格納されています。空の状態で始まる1つのキューに対して操作を実行し、操作ごとに1つの文字列を返してください。pushの場合は"null"、popまたはpeekの場合は数値を文字列にしたもの、emptyの場合は"true"または"false"を返します。

関数

queueOps(ops: string-array, args: integer-array) → string-array
opsstring-array
実行される順序での操作
argsinteger-array
push ごとの値、それ以外のすべての操作では 0
戻り値string-array
各操作につき1つの回答(テキストとして)

制約

  • 1 ≤ ops.length ≤ 2000
  • args.length == ops.length
  • 各ops[i]は、push、pop、peekまたはemptyです。
  • -109 ≤ args[i] ≤ 109はpushの場合、またその他の操作ではargs[i] == 0です。
  • pop と peek は、キューに少なくとも 1 つの項目がある場合にのみ呼び出されます。

例

入力
ops = ["push", "push", "peek", "pop", "empty"]args = [1, 2, 0, 0, 0]
出力
["null", "null", "1", "1", "false"]
説明
1をプッシュし、その後2をプッシュすると、先頭は1なので、peekとpopはどちらも"1"を返します。2はまだ中にあるため、emptyは"false"を返します。

lock icon提出時に隠しテスト+15件

challenge icon

発展問題

他の操作の償却計算量を崩さずに、最新の項目を O(1) で返す back 操作をどのように追加しますか?

コードをリセット
def queueOps(ops, args):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

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

期待値

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