[優先度キュー] leetcode703:データストリームのk番目の最大の要素(簡単)

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/qq_43152052/article/details/100168855

ソリューション:
ここに画像を挿入説明

ソリューション:
自分自身最初のベクトルの実装要素とは、残業が得られ、追加します。そして、ブログの首長を参照してください、私たちは、小さな根ヒープサイズkを確立するプライオリティキューを使用することができ、k番目の最大の要素は常にヒープのトップにランクされ、下のヒープ内のk個の要素よりも大きくなっています。初期化時に、ヒープの大きさは、に)(添加元素のnums.sizeの範囲のサイズことを除いて、nums.size()より大きいK、付加されていない要素も空で記録し、NUMS空(注意維持Kを払う必要がありますレコード内)。追加操作時には、また、ヒープのサイズに注意を払う必要があります。

コードは以下の通りであります:

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

おすすめ

転載: blog.csdn.net/qq_43152052/article/details/100168855