【LeetCode】 155. 最小棧

題目

題目傳送門:傳送門(點擊此處)
在這裏插入圖片描述

題解

思路

在題解看了一圈也沒有找到java中用 Stack 和 PriorityQueue 實現的,所以就把自己的代碼貼上來僅供參考吧

push(x): Stack push 時間複雜度 O(1),PriorityQueue push 時間複雜度 O(lgn)
pop(): Stack pop 時間複雜度 O(1),PriorityQueue pop 時間複雜度 O(lgn)
top(): Stack top 時間複雜度 O(1)
getMin(): PriorityQueue getMin 時間複雜度 O(lgn)

code

class MinStack {

    PriorityQueue<Integer> minHeap;
    Stack<Integer> stack;

    /**
     * initialize your data structure here.
     */
    public MinStack() {
        minHeap = new PriorityQueue();
        stack = new Stack<>();
    }

    public void push(int x) {
        minHeap.offer(x);
        stack.add(x);
    }

    public void pop() {
        int x = stack.pop();
        minHeap.remove(x);
    }

    public int top() {
        return stack.peek();
    }

    public int getMin() {
        return minHeap.peek();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章