免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
ソリューション:
ソリューション:
自分自身最初のベクトルの実装要素とは、残業が得られ、追加します。そして、ブログの首長を参照してください、私たちは、小さな根ヒープサイズ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();
}
};