原题如下:

原题

思路比较简单,就是相当于弄一个大数组,然后全部置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;
}

弄两个数组是关键,一个存输入的数,一个存输入过的次数。

最后修改:2019 年 02 月 27 日 02 : 24 PM
如果觉得我的文章对你有用,请随意赞赏