题目描述:
求众数
众数就是一个序列中出现次数最多的数字。 如果不唯一,则输出小的那个值。
原题链接:
https://www.acwing.com/problem/content/1330/
数据范围:
1<=n<=10^5
每个数字在 int 范围内
测试样例:
例1:8
10 3 8 8 3 2 2 2
输出:2
例2:9
5 5 5 1 1 1 2 2 2
输出:1
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
//用s[N]存频率空间复杂度高
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
int maxnn=INT_MIN,t=1,res=a[1];
for(int i=1;i<=n;i++)
{
if(a[i]==a[i+1])
t++;
else{
if(maxnn < t){
res=a[i];
maxnn=t;
}
t=1;
}
}
cout<<res<<endl;
}