出现次数最多的数
问题描述
给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
输入格式
输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。
输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。
输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。
输出格式
输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。
样例输入
6
10 1 10 20 30 20
10 1 10 20 30 20
样例输出
10
我的代码:
public class test01 {
public static void main(String []args){
System.out.println("样例输入");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int n[]=new int[num];
for(int i=0;i<num;i++){
n[i]=sc.nextInt();
}
sc.close();
int temp=0,count,countmax=0;
for(int i=0;i<num;i++){
count = 0;
for(int j=i;j<num;j++){
if(n[i]==n[j]){
count++;
}
}
if(count>countmax){
countmax = count;
temp = n[i];
}else if(count == countmax){
if(temp > n[i]){
temp = n[i];
}
}
}
System.out.println("样例输出");
System.out.println(temp);
}
}
参考答案代码:(更简洁)
import java.util.*;
public class Main {
public static void main(String[] args) {
new Main().run();
}
public void run() {
Scanner fin = new Scanner(System.in);
int N = fin.nextInt();
int[] count = new int[10001];
for (int i = 0; i < N; ++i) {
++count[fin.nextInt()];
}
int maxCount = -1;
int result = 0;
for (int i = 1; i <= 10000; ++i) {
if (count[i] > maxCount) {
maxCount = count[i];
result = i;
}
}
System.out.println(result);
}
}
浙公网安备 33010602011771号