问题描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。 输出格式 输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。 样例输入 6 10 1 10 20 30 20 样例输出 10
用数组存储次数,之前做过很容易有思路,一开始一直觉得没问题,样例也过了,交了之后判了60,很奇怪找了半天错哪了,还是最值的赋值,我原来觉得只用一个变量找就行了,其实不是,一个变量记个数,一个变量记对应的数字,最终要的是个数最多时的数字。 以后做题,不能仅仅看样例,要自己编一些合理的,毕竟考试的时候不是及时检测,避免失误。
#include <iostream>#include <stdio.h>#include<queue>#include<algorithm>#include <cmath>using namespace std;int num[10010];int main(){ int n; cin>>n; int m; int minn=10010,maxn=0; for(int i=0;i<n;i++) { cin>>m; num[m]++; if(m>maxn) { maxn=m; } if(m<minn) { minn=m; } } int mm=0; int number=0; for(int i=minn;i<=maxn;i++) { if(num[i]>number) { mm=i; number=num[i]; } } cout<<mm<<endl;}新闻热点
疑难解答