59)数据流的第 K 大数值
class KthLargest{
private:
int k;
priority_queue<int, vector<int>, greater<int>> q;
public:
KthLargest(int k, vector<int> nums){
this->k = k;
for(auto num : nums){
add(num);
}
}
int add(int val){
q.push(val);
if(q.size()>k){
q.pop();
}
return q.top();
}
};
class Solution{
private:
static bool cmp(pair<int, int>& a, pair<int, int>& b){
return a.second > b.second;
}
public:
vector<int> topKFrequent(vector<int>& nums, int k){
unordered_map<int, int> map;
for(auto num : nums) map[num]++;
priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(&cmp)> q(cmp);
for(auto [num, count] : map){
q.emplace(num, count);
if(q.size()>k) q.pop();
}
vector<int> ret;
while(!q.empty()){
ret.push_back(q.top().first);
q.pop();
}
return ret;
}
};
61)和最小的 k 个数对
class Solution {
private:
static bool cmp(vector<int>& a, vector<int>& b){
return a[0]+a[1] < b[0]+b[1];
}
public:
vector<vector<int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k) {
vector<vector<int>> all;
vector<vector<int>> ret;
for(int num1 : nums1){
for(int num2 : nums2){
all.push_back({num1, num2});
}
}
priority_queue<vector<int>, vector<vector<int>>, decltype(&cmp)> q(cmp);
for(auto vec : all){
q.emplace(vec);
if(q.size()>k){
q.pop();
}
}
while(!q.empty()){
ret.emplace_back(q.top());
q.pop();
}
return ret;
}
};