统计数字·题解
2023-08-08 21:02:30
发布于:浙江
69阅读
0回复
0点赞
思路:
输入n
个数字,范围不超int
,根据数字大小升序输出数字与它们的出现频率。
可以定义一个结构体,num
记录数字,cnt
记录出现频率,重载运算符<
用于优先队列的比较。
n
不必存储,输入的时候直接n--
,然后将输入并存储好的map
数组遍历存入优先队列q
,因为是优先队列,不必排序,再遍历优先队列输出即可。
代码:
#include<bits/stdc++.h>
using namespace std;
struct ccount{
int num;
int cnt;
bool operator<(const ccount &n1) const{
return n1.num<num;
}
};
map<int,int> nums;
priority_queue<ccount> q;
int n,num;
int main(){
cin>>n;
while(n--){
cin>>num;
nums[num]++;
}
for(auto i=nums.begin();i!=nums.end();i++){
q.push({i->first,i->second});
}
while(q.size()){
cout<<q.top().num<<" "<<q.top().cnt<<endl;
q.pop();
}
}
这里空空如也
有帮助,赞一个