Moving Median
- javascript
- arrays
- median
Problem URL:Moving Median
My Solution:
function MovingMedian(arr) {
let subArr = [],
midpoint = 0,
predecessors = arr[0] - 1;
let nums = arr.slice(1);
nums = nums.map((num, i) => {
if (i == 0) return num;
// get the range of arr elements for moving window
if (i <= predecessors) {
subArr = nums.slice(0, i+1).sort((a,b) => a - b);
} else {
subArr = nums.slice(i - predecessors, i+1).sort((a,b) => a - b);
}
// get midpoint
midpoint = Math.floor(subArr.length / 2);
// calculate the median for each range / subarray
return subArr.length % 2 ?
subArr[midpoint] :
(subArr[midpoint] + subArr[midpoint - 1]) / 2;
});
// return median list as string
return nums.join(",");
}
Let's Connect
Twitter •GitHub •LinkedIn