diff --git a/155.min-stack.java b/155.min-stack.java new file mode 100644 index 0000000..8b1fa4a --- /dev/null +++ b/155.min-stack.java @@ -0,0 +1,45 @@ +/* + * @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 +