/* * @lc app=leetcode id=155 lang=java * * [155] Min Stack */ // @lc code=start class MinStack { private PriorityQueue pq; private Deque deque; public MinStack() { pq = new PriorityQueue<>(); deque = new ArrayDeque<>(); } public void push(int val) { pq.add(val); deque.addLast(val); } public void pop() { int v = deque.removeLast(); pq.remove(v); } public int top() { return deque.peekLast(); } public int getMin() { return pq.peek(); } } /** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(val); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */ // @lc code=end