查找众数及中位数

标题:查找众数及中位数 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
1.众数是指一组数据中出现次数量多的那个数,众数可以是多个
2.中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以2,所得的结果就是中位数
3.查找整型数组中元素的众数并组成一个新的数组,求新数组的中位数


import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String num = scanner.nextLine();
        String[] nums =num.split("\\s+");
        Map<Integer,Integer> map = new HashMap<>();
        for (String nu :nums){
            int nn = Integer.valueOf(nu);
            if (map.containsKey(nn)){
                map.put(nn,map.get(nn)+1);
            }else {
                map.put(nn,1);
            }
        }
        int max = 0;
        for (int mm : map.values()){
            if (mm>=max){
                max =mm;
            }
        }
        List<Integer> numList =new ArrayList<>();
        for (Map.Entry<Integer,Integer> entry :map.entrySet()){
            if (entry.getValue()==max){
                numList.add(entry.getKey());
            }
        }
        Collections.sort(numList);
        if (numList.size()%2!=0){
            int result =(numList.size()+1)/2 -1;
            System.out.println(numList.get(result));
        }else {
            System.out.println((numList.get(numList.size()/2)+numList.get(numList.size()/2-1))/2);
        }
    }
}


全部评论

相关推荐

1 2 评论
分享
牛客网
牛客企业服务