题目:
分析:
原本傻傻的自己写了个栈,写完一看题解可以用stack,在下面有个评论说面试时问到怎么不用辅助栈,于是结合思考了一下,自己写了一下代码。
他就是在原有栈存一个int的情况下,扩城int[ ]存放两个元素,一个是val,一个是动态规划下来现有栈的最小值。
代码:
class MinStack {
private Stack<int[]> stack=new Stack<>();
public MinStack() {
}
public void push(int val) {
if(stack.isEmpty()){
stack.push(new int[]{val,val});
}else{
int[] x=stack.peek();
stack.push(new int[]{val,Math.min(val,x[1])});
}
}
public void pop() {
stack.pop();
}
public int top() {
int[] x=stack.peek();
return x[0];
}
public int getMin() {
int[] x=stack.peek();
return x[1];
}
}