【leetcode 155】最小スタックJava問題解
1482 ワード
leetcode分類の下ですべての問題解は作者本人が比較した後に選んだ問題解であり、読みやすく、メンテナンス性に優れている.
問題ごとに1つの答えしかなく、煩雑で実用的でない案を避けるため、必ずしも最適解とは限らない.
push,pop,top操作をサポートし,定数時間で最小要素を取得できるスタックを設計した. push(x)--要素xをスタックにプッシュします. pop()--スタックトップの要素を削除します. top()--スタックトップ要素を取得します. getMin()--スタック内の最小要素を取得します.
例:
考え方:自理
問題ごとに1つの答えしかなく、煩雑で実用的でない案を避けるため、必ずしも最適解とは限らない.
push,pop,top操作をサポートし,定数時間で最小要素を取得できるスタックを設計した.
例:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> -3.
minStack.pop();
minStack.top(); --> 0.
minStack.getMin(); --> -2.
public class MinStack {
Stack stack = new Stack();
Stack minStack = new Stack();
public void push(int x) {
stack.push(x);
if (minStack.isEmpty())
minStack.push(x);
else
if (minStack.peek() > x)
minStack.push(x);
else
minStack.push(minStack.peek());
}
public void pop() {
if (!stack.isEmpty()) {
stack.pop();
minStack.pop();
}
}
public int top() {
return stack.peek();
}
public int getMin() {
return minStack.peek();
}
}
/**
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(x);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.getMin();
*/
考え方: