Skip to content

Instantly share code, notes, and snippets.

@tmosest
Created October 9, 2016 08:42
Show Gist options
  • Save tmosest/a3872dd253ab1b1fbd1cdd560faccfba to your computer and use it in GitHub Desktop.
Save tmosest/a3872dd253ab1b1fbd1cdd560faccfba to your computer and use it in GitHub Desktop.
Hackerrank: Day 0: Mean, Median, and Mode
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int cases = in.nextInt();
double[] numbers = new double[cases];
for(int i = 0; i < cases; i++) {
numbers[i] = in.nextDouble();
}
in.close();
double mean = calculateMean(numbers);
double median = calculateMedian(numbers);
double mode = calculateMode(numbers);
DecimalFormat decimalFormat = new DecimalFormat("0.#");
System.out.println(decimalFormat.format(mean));
System.out.println(median);
System.out.println((int) mode);
}
public static double calculateMode(double[] numbers) {
double result = numbers[0];
Arrays.sort(numbers);
int modeCount = 0;
int greatestModeCount = 0;
double lastDigit = 0.0;
for(int i = 0; i < numbers.length; i++) {
if(lastDigit == numbers[i]) {
modeCount++;
} else {
if(modeCount > greatestModeCount) {
greatestModeCount = modeCount;
result = lastDigit;
}
modeCount = 0;
}
lastDigit = numbers[i];
}
return result;
}
public static double calculateMedian(double[] numbers) {
double result = 0.0;
int length = numbers.length;
Arrays.sort(numbers);
if(length % 2 == 0) {
int i = length/2;
result = (numbers[i] + numbers[i - 1])/2;
} else {
int i = (length - 1)/2;
result = numbers[i];
}
return result;
}
public static double calculateMean(double[] numbers) {
double result = 0.0;
int length = numbers.length;
for(int i = 0; i < length; i++) {
result += numbers[i];
}
result /= length;
return result;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment