Drill

ProblemsGo › reporting

The middle of a set of readings

mediumreportingSortingArraysMathGo

A latency report quotes the median rather than the mean, because one slow request should not move the headline number.

medianValue(values: list<int>) → float

Go needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

func medianValue(values []int) float64 {
	
}

Worked examples

CallResult
medianValue([]int{3, 1, 2})2.0
medianValue([]int{1, 2, 3, 4})2.5
medianValue([]int{7})7.0
medianValue([]int{})0.0

Hint

After sorting, the two middles for an even count sit at n/2 - 1 and n/2.

Reference solution in Go
func medianValue(values []int) float64 {
	if len(values) == 0 {
		return 0
	}
	s := append([]int{}, values...)
	sort.Ints(s)
	n := len(s)
	mid := n / 2
	if n%2 == 1 {
		return float64(s[mid])
	}
	return float64(s[mid-1]+s[mid]) / 2
}

The same problem in another language

More reporting problems in Go