试题编号: | 201312-1 |
试题名称: | 出现次数最多的数 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输出格式 输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。 样例输入 6 样例输出 10 |
java:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[10001];
for(int i = 0; i < n; i++) {
int num = sc.nextInt();
nums[num]++;
}
sc.close();
int max = 0;
for(int i = 1; i < 10001; i++) {
if(nums[i] > nums[max]) {
max = i;
}
}
System.out.println(max);
}
}
c++:
#include<iostream>
using namespace std;
int main()
{
int n,i;
cin>>n;
int a[1000]={0},b[1000]={0};
for(i=0;i<n;i++)
{
cin>>a[i];
}
for(i=0;i<n;i++)
{
b[i]=1;
}
for(i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(a[i]==a[j])
b[i]++;
}
}
int max=b[0],min=a[0];
for(i=1;i<n;i++)
{
if(b[i]>max)
{
max=b[i];
min=a[i];
}
else if(b[i]==max)
{
if(a[i]<min)
{
min=a[i];
}
}
}
cout<<min;
return 0;
}
c++:
#include <bits/stdc++.h>
using namespace std;
int main()
{
//方法一,最大数据为10000,直接使用大数组
int a[10001]={0};
int maxpos=0;
int n;cin>>n;
for(int i=0;i<n;i++){
int x;cin>>x;
a[x]++;
if(a[x]>a[maxpos] ||(a[x]==a[maxpos] && x<maxpos)) maxpos=x;
}
cout<<maxpos;
return 0;
//方法二,使用map缩减存储空间,其余方法与方法一类似,理论空间占用减少
//但由于 STL库,导致实际空间占用并未减少
// map<int,int> m;
// map<int,int>::iterator mit;
// int n,x;cin>>n>>x;
// m.insert(make_pair(x,1));
// mit=m.begin();
// for(int i=1;i<n;i++){
// cin>>x;
// m.insert(make_pair(x,0));
// m[x]++;
// if(m[x]>mit->second||(m[x]==mit->second && x < mit->first)) mit=m.find(x);
// }
// cout<<mit->first;
// return 0;
}