原题如下:
思路比较简单,就是相当于弄一个大数组,然后全部置0,如果输入了这个数就增1,再弄一个数组存储输入过的数字,用来减少判断的次数。
代码如下:
#include <stdio.h>
int num[1000000] = { 0 }; //存输入的数个数
int tnum[100000] = { 0 }; //用来存储输入过的数
int main()
{
int n;
int count = 0;
int res;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
int t;
scanf("%d", &t);
tnum[i] = t;
num[t] ++;
}
int i;
for (i = 0; i < n; i++)
{
if (num[tnum[i]] >= count)
{
if (num[tnum[i]] == count)
{
if (res > tnum[i]) //这里是题目中的不唯一的情况,输出小的
{
count = num[tnum[i]];
res = tnum[i];
}
}
else
{
count = num[tnum[i]];
res = tnum[i];
}
}
}
printf("%d\n", res);
system("pause");
return 0;
}
弄两个数组是关键,一个存输入的数,一个存输入过的次数。