import java.util.Stack; public class Solution { private Stack<Integer> stack = new Stack<>(); private Stack<Integer> minStack = new Stack<>(); public void push(int node) { stack.push(node); if(minStack.isEmpty()){ minStack.push(node); } else { int top = minStack.peek(); minStack.push(Math.min(top,node)); } } public void pop() { if(!stack.isEmpty()){ stack.pop(); minStack.pop(); } } public int top() { if(!stack.isEmpty()){ return stack.peek(); } else { return -1; } } public int min() { if(!minStack.isEmpty()){ return minStack.peek(); } else { return -1; } } }