1 条题解
-
0
思路
保留重复元素的前k大;堆、排序或快速选择均可求解。
参考程序(C++11)
#include <bits/stdc++.h> using namespace std; int main(){int n,k;cin>>n;vector<int>a(n);for(int &x:a)cin>>x;cin>>k;priority_queue<int,vector<int>,greater<int>>q;for(int x:a){q.push(x);if((int)q.size()>k)q.pop();}vector<int>out;while(!q.empty()){out.push_back(q.top());q.pop();}for(auto it=out.rbegin();it!=out.rend();it++)cout<<*it<<'\n';}
- 1