- 算法
数组栈核心思想
本题的难点在于要求在常数时间内检索到最小元素的栈,那么代表不能在需要获取最小元素时再去处理,所以选择边存数据边获得最小值。这里的处理有两个方法:一个是数组栈,第一个位置保存栈首数字,第二个位置保存当前最小值;另外一个方法是辅助栈,即另外设计一个栈,用于保存最小的数字。代码很好实现。代码
class MinStack {
private Stack stack;
public MinStack() {
stack = new Stack<>();
}
public void push(int val) {
if(stack.isEmpty()) stack.push(new int[]{val,val});
else {
stack.push(new int[]{val,Math.min(val, stack.peek()[1])});
}
}
public void pop() {
stack.pop();
}
public int top() {
return stack.peek()[0];
}
public int getMin() {
return stack.peek()[1];
}
}



