解决思路:通过利用两个栈,一个是实际的栈,一个是用来记录压入的最小记录,最小值放在栈顶,最小记录栈要与实际栈同时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(); } }