原本傻傻的自己写了个栈,写完一看题解可以用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]; } }