BIT 1006 The most frequent number

来源:互联网 发布:中国为什么不禁烟 知乎 编辑:程序博客网 时间:2024/05/21 08:00

题目大意:给你NN<=100000)个数,每个数大小在10^-910^9之间,问其中出现频数最高的是哪个数?并输出其中数值最小的那个

 

考察点:排序?

 

思路分析:排序一次后,从前往后扫一遍就行。。。。

 

交了N次才AC。。一开始想用哈希做,结果小细节一直没写好。。后来发现直接快排就行。。于是就A了。。

 

#include<stdio.h>#include<stdlib.h>long int a[100002];void quicksort(long int* arr,int l,int r){     int i,j;     long int k,t;     if (l>=r) return;      i=l;j=r;k=arr[(l+r)/2];     while (i<=j)     {           while (arr[i]<k) i++;           while (arr[j]>k) j--;           if (i<=j)           {              t=arr[i];arr[i]=arr[j];arr[j]=t;              i++;j--;           }     }     quicksort(arr,i,r);     quicksort(arr,l,j);}      int main(){    int n,i,f,m;    long int j,ans;    while (scanf("%d",&n)!=EOF)    {          for (i=1;i<=n;i++)           {              scanf("%d",&a[i]);          }          quicksort(a,1,n);          i=1;j=a[1];f=1;m=0;ans=j;          while (i<n)          {                i++;                if (j==a[i]) f++;                else {                     if (f>m)                      {                              m=f;                              ans=j;                     }                     j=a[i];                     f=1;                }          }      if (f>m) ans=j;      printf("%d\n",ans);       }                           return 0;}


 


 

原创粉丝点击