import java.util.Stack;
//借助辅助栈,将最小值存放在辅助栈,如要插入新节点,则看是否比辅助栈栈顶结点更小,
//若更小,更新辅助栈,否则再插入一个栈顶元素作为最小值。
public class Solution {

Stack<integer> stack1 = new Stack<integer>();
Stack<integer> stack2 = new Stack<integer>();
public void push(int node) {
stack1.push(node);
if (stack2.isEmpty()){
stack2.push(node);
}else {
if (node<=stack2.peek()){
stack2.push(node);
}else {
int top = stack2.peek();
stack2.push(top);
}
}
}</integer></integer></integer></integer>

public void pop() {
if (stack1!=null&&stack1.size()>0){
stack1.pop();
stack2.pop();
}
}

public int top() {
if (stack1.size()==0){
return 0;
}else{
return stack1.peek();
}
}

public int min() {
if (stack1.size()==0){
return 0;
}else{
return stack2.peek();
}
}

}