Deque<Integer> stk; Deque<Integer> stkAux; /** initialize your data structure here. */ publicMinStack(){ stk = new ArrayDeque<>(); stkAux = new ArrayDeque<>(); stkAux.offerFirst(Integer.MAX_VALUE); } publicvoidpush(int x){ stk.offerFirst(x); stkAux.offerFirst(Math.min(x,stkAux.peekFirst())); } publicvoidpop(){ stk.pollFirst(); stkAux.pollFirst(); } publicinttop(){ return stk.peekFirst(); } publicintgetMin(){ return stkAux.peekFirst(); } }
/** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */
Deque<Long> stk; long min; /** initialize your data structure here. */ publicMinStack(){ stk = new ArrayDeque<>(); } publicvoidpush(int x){ if(stk.isEmpty()) { min = x; stk.offerFirst((long) 0); } else { stk.offerFirst(x - min); if(x < min) min = x; } } publicvoidpop(){ if(stk.peekFirst() < 0) { min = min - stk.peekFirst(); stk.pollFirst(); } else { stk.pollFirst(); } } publicinttop(){ return (stk.peekFirst() < 0) ? (int) min : (int) (stk.peekFirst() + min); } publicintgetMin(){ return (int) min; } }
/** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */