Min Stack
https://leetcode.com/problems/min-stack/description/
题目:设计一个栈,不仅满足栈的基本功能,还能在固定的时间取到栈中的最小元素;
解答:使用两个栈:一个栈stack正常存储元素;
另一个栈minStack与stack同步存储、删除元素,但是存储的内容为当前的最小元素;
代码:
class MinStack {
Stack<Integer> stack;
Stack<Integer> minStack;
/** initialize your data structure here. */
public MinStack() {
stack = new Stack<Integer>();
minStack = new Stack<Integer>();
}
public void push(int x) {
if (minStack.isEmpty()) {
minStack.push(x);
} else {
minStack.push(Math.min(x, minStack.peek()));
}
stack.push(x);
}
public void pop() {
stack.pop();
minStack.pop();
}
public int top() {
return stack.peek();
}
public int getMin() {
return minStack.peek();
}
}