解决思路:通过利用两个栈,一个是实际的栈,一个是用来记录压入的最小记录,最小值放在栈顶,最小记录栈要与实际栈同时push和top,push时足最小记录栈的栈顶小于压入数据时
压入栈顶的<span style="font-family: Arial, Helvetica, sans-serif;">重复数据,否则压入新数据。</span>
import java.util.Stack;
public class minStack {
public static void main(String args[]){
minSt st=new minSt();
//st.push(5);
//st.push(3);
//st.push(4);
System.out.println(st.min());
}
}
class minSt{
Stack<Integer> st=new Stack<Integer>();
Stack<Integer> mst=new Stack<Integer>();
public void push(int num){
st.push(num);
if(mst.isEmpty()){
mst.push(num);
}else{
if(mst.peek()<num){
mst.push(mst.peek());
}else{
mst.push(num);
}
}
}
public int pop(){
mst.pop();
return st.pop();
}
public int min(){
return mst.pop();
}
}