出现次数最多的数

简介: 出现次数最多的数

问题描述

给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。

输入格式

输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。

输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。

输出格式

输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。

样例输入

6

10 1 10 20 30 20

样例输出

10

源代码

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
    int i,n,xr[20000],x,max=0,res=0,k;
    scanf("%d",&n);
    for(i=0;i<12000;i++){
        xr[i]=0;
    }
    for(i=0;i<n;i++){
        scanf("%d",&x);
        if(x>max){
            max=x;
        }
        xr[x]++;
    }
    for(i=0;i<=max;i++){
            if(xr[i]>res){
                res=xr[i];
                k=i;
            }
    }
    printf("%d",k);
    return 0;
}

博主亲身体会,如果你自己为解决这个问题写的的代码少了return 0;那么你提交的代码也许会被机器判别错误,所以建议大家敲代码一定要规范,真的是泪的教训!


相关文章
|
2月前
最小操作次数问题
最小操作次数问题
25 1
|
8月前
|
算法
面试题:如何找出数组里出现次数超过总数1/3的数
如果你每次从nums中拿出3个不一样的数作为一组,肯定会出现两种情况。一,nums被取空了,那么nums中每个数出现次数最多占总次数的1/3,写代码很好处理吧!! 二,还有剩余,这个情况就复杂了,有可能剩余多个,但是……但是,最多只可能剩余两种数。 为什么? 3个不同的数凑一组才能删掉,所以不可能删掉超过1/3的数。所以超过1/3的数肯定被剩下来,但是,剩下来的俩数并不一定都是超过1/3的,这点额外注意。
40 1
|
2月前
1002 写出这个数
1002 写出这个数
20 0
|
2月前
|
C++
第三大的数(C++)
第三大的数(C++)
23 0
|
2月前
4.韩信点兵:有一个数,用3除余2;用5除余3;用7除余2,求满足条件的最小数
4.韩信点兵:有一个数,用3除余2;用5除余3;用7除余2,求满足条件的最小数
16 0
|
8月前
第三大的数
第三大的数
|
12月前
1186:出现次数超过一半的数
1186:出现次数超过一半的数
随机1-100的数循环找出88的次数
随机1-100的数循环找出88的次数
60 0
|
人工智能 运维 物联网
数智光伏,走在希望的田野上
数智光伏,走在希望的田野上