Problem
【问题描述】
输入一组无序的整数,编程输出其中出现次数最多的整数及其出现次数。
【输入形式】
先从标准输入读入整数的个数(大于等于1,小于等于100),然后在下一行输入这些整数,各整数之间以一个空格分隔。
【输出形式】
在标准输出上输出出现次数最多的整数及其出现次数,两者以一个空格分隔;若出现次数最多的整数有多个,则按照整数升序分行输出。
【样例输入】
10
0 -50 0 632 5813 -50 9 -50 0 632
【样例输出】
-50 3
0 3
【样例说明】
输入了10个整数,其中出现次数最多的是-50和0,都是出现3次。
【评分标准】该程序要求输出出现次数最多的整数和出现次数。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeSet;
public class everydayjava {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
scanner.close();
Map<Integer, Integer> countMap = new HashMap<>();
for (int num : arr) {
if (countMap.containsKey(num)) {
countMap.put(num, countMap.get(num) + 1);
} else {
countMap.put(num, 1);
}
}
int maxCount = 0;
TreeSet<Integer> maxCountNumbers = new TreeSet<>();
for (int num : countMap.keySet()) {
int count = countMap.get(num);
if (count > maxCount) {
maxCount = count;
maxCountNumbers.clear();
maxCountNumbers.add(num);
} else if (count == maxCount) {
maxCountNumbers.add(num);
}
}
for (int num : maxCountNumbers) {
System.out.println(num + " " + maxCount);
}
}
}
在前面的文章中有讲到HashMap和TreeMap