题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
/**
* 辅助栈保存(当前压入栈)最小值
* 压人x,如果x小于辅助栈顶元素,则压人x,否则压人辅助栈顶元素
* 使得当前栈顶一直保存当前栈的最小值
*/
public class Solution {
Stack<Integer> stack = new Stack<>();
Stack<Integer> minstack = new Stack<>();
public void push(int node) {
stack.push(node);
if (minstack.empty() || node < minstack.peek()) {
minstack.push(node);
}else {
minstack.push(minstack.peek());
}
}
public void pop() {
if (stack.empty() && minstack.empty()) {
return;
}
stack.pop();
minstack.pop();
}
public int top() {
if (stack.empty()) {
return 0;
}
return stack.peek();
}
public int min() {
if (minstack.empty()) {
return 0;
}
return minstack.peek();
}
}