Drill

ProblemsTypeScript › patterns

The middle of the list

mediumpatternsSortingArraysMathTypeScript

A dashboard shows a campaign’s typical daily spend, and “typical” is whatever lands in the middle once the days are sorted.

medianOf(values: list<int>) → float

Solve it in the editor →

Where you start

function medianOf(values: number[]): number {
  
}

Worked examples

CallResult
medianOf([3,1,2])2
medianOf([1,2])1.5
medianOf([5])5
medianOf([5,1,4,2])3

Hint

Sort a copy, not the caller’s list, then look at the middle pair or single value.

Reference solution in TypeScript
function medianOf(values: number[]): number {
  const xs: number[] = values.slice().sort((a, b) => a - b);
  const n = xs.length;
  if (n === 0) return 0;
  const mid = Math.floor(n / 2);
  return n % 2 === 1 ? xs[mid] : (xs[mid - 1] + xs[mid]) / 2;
}

The same problem in another language

More patterns problems in TypeScript