题目链接
https://leetcode-cn.com/problems/min-stack-lcci/
描述
请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复
杂度必须为O(1)。
示例
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.
代码
注意弹出时最小栈的处理即可
class MinStack {
Deque<Integer> stack;
Deque<Integer> help;
/** initialize your data structure here. */
public MinStack() {
stack = new LinkedList<>();
help = new LinkedList<>();
}
public void push(int x) {
stack.push(x);
if (help.isEmpty() || x <= help.peek()) {
help.push(x);
}
}
public void pop() {
if (help.peek().equals(stack.pop())) {
help.pop();
}
}
public int top() {
return stack.peek();
}
public int getMin() {
return help.peek();
}
}