本题借助辅助栈,以及一个变量用来记录最小元素,当把元素压入栈时,比较元素与最小元素间的关系,若大于最小元素,则将最小元素压入辅助栈,此元素压入数据栈,若元素小于最小元素,则将此元素压入数据栈和辅助栈。代码如下
import java.util.Stack;
public class Solution {Stack<Integer> st1=new Stack<Integer>();
Stack<Integer> st2=new Stack<Integer>();
Integer tem=null;
public void push(int node) {
if(tem!=null){
if(node<=tem){
tem=node;
st1.push(node);
st2.push(node);
}
else{
st1.push(node);
st2.push(tem);
}
}
else{
tem=node;
st1.push(node);
st2.push(node);
}
}
public void pop() {
if(!st1.empty()&&!st2.empty()){
int m=st1.pop();
st2.pop();
tem=m;
}
}
public int top() {
int top=st1.pop();
st1.push(top);
return top;
}
public int min() {
int min=st2.pop();
st2.push(min);
return min;
}
}