Leetcode703數據流中的第k大元素

Leetcode703數據流中的第k大元素

思路: 把這k個元素建一個數據結構,可以方便的讀出來其中最小的,所以可以用隊列中的小頂堆,或者使用set排序應該也可以。以下是優先隊列小頂堆寫法

class KthLargest {
    priority_queue<int,vector<int>,greater<int>> q;
    int k;
public:
    KthLargest(int k, vector<int>& nums) {
        this->k=k;
       q.push(INT_MIN);
       for(auto num:nums)
       {
           add(num);
       } 
    }
    
    int add(int val) {
        int temp=q.top();
        if(q.size()<k)
        {
            q.push(val);
        }
        else if(val>temp)
        {
            q.pop();
            q.push(val);
        }
    return q.top();  

    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章