private Stack<Integer> stack;
private Stack<Integer> minStack;
/** initialize your data structure here. */
public MinStack() {
stack = new Stack<>();//入
minStack = new Stack<>();//出
}
public void push(int x) {
//1、stack是一定需要放元素的
//2、最小栈当中 是否存放数据 x<= 最小栈的栈顶元素
stack.push(x);
if(minStack.isEmpty()){
minStack.push(x);
}else if(x <= minStack.peek()){
minStack.push(x);
}
}
public void pop() {
//1、stack是一定需要弹出元素的
//2、最小栈当中 是否弹出数据 x == 最小栈的栈顶元素
int x = stack.pop();
if(x == minStack.peek()){
minStack.pop();
}
}
public int top() {
//跟最小栈没有关系
return stack.peek();
}
public int getMin() {
//每次返回最小栈的栈顶元素
return minStack.peek();
}
最小栈(每次都可以从栈里提出一个最小的元素)
最新推荐文章于 2024-07-10 15:47:04 发布