辅助栈
import java.util.Stack;
class MinStack {
Stack<Integer> stack;
Stack<Integer> minStack;
public MinStack() {
stack = new Stack<>();
minStack = new Stack<>();
/**
* 使用辅助栈,每次比较栈顶元素和入栈元素,存储最小的那个,这样主栈在入栈出栈时都会更新最小值
* 第一个存储的是最大值
*/
minStack.push(Integer.MAX_VALUE);
}
public void push(int val) {
stack.push(val);
/**
* Math.min()方法选出二者最小值
*/
minStack.push(Math.min(val, minStack.peek()));
}
public void pop() {
/**
* 同步进出栈
*/
stack.pop();
minStack.pop();
}
public int top() {
return stack.peek();
}
public int getMin() {
return minStack.peek();
}
}
/**
* 时间复杂度 O(1)
* 空间复杂度 O(n)
*/
https://leetcode-cn.com/problems/min-stack/