Home

Mean Median And Mode

Detailed explanation coming soon!

import java.util.*;

public class Solution {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] a = new int[n];
        for(int i = 0; i < n; i++){
            a[i] = in.nextInt();
        }
        Arrays.sort(a);
        printMean(a);
        printMedian(a);
        printMode(a);
    }

    private static void printMean(int[] a){
        int sum = 0;
        for(int n : a){
            sum += n;
        }
        System.out.println(String.format("%.1f", (float)sum / a.length));
    }

    private static void printMedian(int[] a){
        float median;
        if((a.length & 1) == 0){
            //Even length
            median = (float)(a[a.length / 2] + a[(a.length / 2) - 1]) / 2; 
        } else {
            //Odd length
            median = a[a.length / 2];
        }
        System.out.println(String.format("%.1f", median));
    }

    private static void printMode(int[] a){
        HashMap<Integer, Integer> freqMap = new HashMap<Integer, Integer>();
        int maxCount = 1;
        int mode = a[0];
        for(int n : a){
            if(freqMap.containsKey(n)){
                int newCount = freqMap.get(n) + 1;
                if(newCount > maxCount) {
                    maxCount = newCount;
                    mode = n;
                }

                freqMap.put(n, freqMap.get(n) + 1);
            } else {
                freqMap.put(n, 1);
            }
        }
        System.out.println(mode);
    }
}


Questions? Have a neat solution? Comment below!