#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=10000;
int main()
{
int a[N];
int i,n,num1;
memset(a,0,sizeof(a));
cin>>n;
for(i=0;i<n;i++)
{
cin>>num1;
a[num1]++;
}
int num2,m=0;
for(i=0;i<N;i++)
if(a[i]>m)
{
m=a[i];
num2=i;
}
cout<<num2;
return 0;
}
这道题目之前我是用一个数组存输入的n个数字,然后再进行循环找出现次数最多的那个数。但是那样太复杂,所以就进行修改,设一个数组,读入某个数字num1,那么就让a[num1]++,这样不仅存住了相同数组的次数,而且数组索引本身也是这个数字的值(num1)。
再进行第二次循环,该循环要找到出现次数最多的数字,那么就从第一个开始找,条件a[i]>m。这种方法还使得当有两个数字出现的次数是一样多的时候,num2是比较小的数。
memset函数