JAVA

```
//push() pop() top()都是栈自带方法,
//要求输出最小栈元素,即实现min()方法。
//这里需要借助一个辅助的栈
import java.util.Stack;

public class Solution {
Stack<integer> stack_data = new Stack<integer>();
//声明辅助栈,用来装每次入栈时 现状最小的对象
Stack<integer> stack_min = new Stack<integer>();</integer></integer></integer></integer>

public void push(int node) {
    stack_data.push(node);
    //node < stack_min.peek() 相当于存放目前最小值到栈顶。
    if(stack_min.isEmpty() || node < stack_min.peek()){
        stack_min.push(node);
    }else{
        //更新最小栈的栈顶
        //这一步是对应的L27行,如果这里不这么操作,min栈里面的最小值在27行就被出栈了。
        stack_min.push(stack_min.peek());
    }
}

public void pop() {
    stack_data.pop();
    //如果主栈stack_data有pop出栈操作,现存最小值可能就发生变化了,
    //所以最小栈也出栈操作。
    stack_min.pop();
}

public int top(){
    return stack_data.peek();
}

public int min() {
    return stack_min.peek();
}

}
```