最小スタック

Medium ()カテゴリ: stack

関連するパターン:

問題

スタックの基本操作(push、pop、top)をサポートし、さらに最小要素を定数時間で取得する操作(getMin)をサポートする「MinStack」クラスを設計してください。 実装すべきメソッド: - `MinStack()` - スタックオブジェクトを初期化します。 - `void push(int val)` - 要素 val をスタックにプッシュします。 - `void pop()` - スタックの先頭要素を削除します。 - `int top()` - スタックの先頭要素を取得します。 - `int getMin()` - スタック内の最小要素を取得します。

2:
入力:
[ "MinStack", "push", "push", "push", "getMin", "pop", "top", "getMin" ] [ [], [-2], [0], [-3], [], [], [], [] ]
出力:
[null,null,null,null,-3,null,0,-2]
説明:
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); // -3を返す minStack.pop(); minStack.top(); // 0を返す minStack.getMin(); // -2を返す

制約

  • -2^31 <= val <= 2^31 - 1
  • pop、top、getMinの各操作は、スタックが空でない場合にのみ呼び出されます
  • push、pop、top、getMinの各操作の呼び出しは合計で最大3 * 10^4回です