import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class ModalNums{
public static void main(String[] args) {
int[] ints = {1, 3, 4, 2, 5, 2, 4, 3, 2};
// 输入
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
String[] s = input.split(" ");
int[] nums = new int[s.length];
for (int i = 0; i < nums.length; i++) {
nums[i] = Integer.parseInt(s[i]);
}
scanner.close();
// 获取众数
int[] modalNums = getModalNums(nums);
// 获取中位数
int median = getMedian(modalNums);
System.out.println(median);
}
private static int getMedian(int[] modalNums) {
int median;
int len = modalNums.length;
if (len % 2 == 0) {
median = (modalNums[len / 2 - 1] + modalNums[len / 2]) / 2;
} else {
median = modalNums[len / 2];
}
return median;
}
public static int[] getModalNums(int[] nums) {
// key:元素值 val:出现次数
Map<Integer, Integer> map = new HashMap<>();
// 1.遍历数组
for (int num : nums) {
map.put(num, map.getOrDefault(num, 0) + 1);
}
// 2.把map的val转为数组
List<Integer> frequency = new ArrayList<>();
map.forEach((k, v) -> {
frequency.add(v);
});
// 3.进行排序,统计频率
Collections.sort(frequency);
// 4.最后一个即为出现次数最大值,
int maxFrequency = frequency.get(frequency.size() - 1);
List<Integer> list = new ArrayList<>();
// 5.遍历map,看看那个元素的的val=maxFrequency,然后放到result中
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue() == maxFrequency) {
list.add(entry.getKey());
}
}
int[] newArr = new int[list.size()];
for (int i = 0; i < newArr.length; i++) {
newArr[i] = list.get(i);
}
// 6.返回结果
return newArr;
}
}
https://blog.csdn.net/qq_35958391/article/details/125283314