试题 算法训练 出现次数最多的整数
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
输入格式:
第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
输出格式:
输出只有一行,即出现次数最多的那个元素值。
输入输出样例
样例输入
5
100
150
150
200
250
样例输出
150
import java.util.HashMap;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
// 如果输入小于1或者大于20直接返回,如果没有这个检测只能拿到80分
if (n<1 || n>20){
return;
}
// 构建HashMap存储输入的值以及重复次数
HashMap<Integer, Integer> map = new HashMap<>();
for(int i=0;i<n;i++){
int temp = scan.nextInt();
if(map.containsKey(temp)){
map.put(temp, map.get(temp)+1);
}else {
map.put(temp, 1);
}
}
// 遍历map集合,k记录Map中最大的key,v记录其值,最后输出重复次数最多的key
int k = 0;
int v = 0;
for (Integer key:map.keySet()){
Integer vel = map.get(key);
if (vel > v){
v = map.get(key);
k = key;
}
}
System.out.println(k);
}
}