题解 | 查找第K小数
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
priority_queue<int,vector<int>,greater<int>>q;
set<int>x;
for(int i=0;i<n;i++){
int a;
cin>>a;
x.insert(a);
}
for(auto a:x){
q.push(a);
}
int k;
cin>>k;
k--;
while(k--)q.pop();
cout<<q.top()<<endl;
}
}
可以不用set去重,我这里为了省事直接用set了,然后用一个优先队列,上面的参数可以不写,不写默认就是less的形式,可以下面的逻辑稍微改一下也能用
查看5道真题和解析
