import java.util.*; import java.util.Stack; public class Solution { Stack<Integer> stack = new Stack<>(); // 栈用于记录较小的元素 Stack<Integer> stack1 = new Stack<>(); public void push(int node) { stack.push(node); // 每次pyush时判断是不是更小的元素,是的话就加入栈2 if(stack1.isEmpty()||stack1.peek()>node){ stack1.push(node); }else{ // 不小于的话就重复加入栈顶元素,保持与栈1存储元素数量相同 // 并且栈顶元素最小 stack1.push(stack1.peek()); } } public void pop() { //因为弹出时可能将最小的元素弹出, // 所以此时也要讲栈2弹出一个元素, // 与栈1保持同步 stack.pop(); stack1.pop(); } public int top() { return stack.peek(); } public int min() { return stack1.peek(); } }