Back to all solutions
#2090 - K Radius Subarray Averages
Problem Description
You are given a 0-indexed array nums of n integers, and an integer k.
The k-radius average for a subarray of nums centered at some index i with the radius k is the average of all elements in nums between the indices i - k and i + k (inclusive). If there are less than k elements before or after the index i, then the k-radius average is -1.
Build and return an array avgs of length n where avgs[i] is the k-radius average for the subarray centered at index i.
The average of x elements is the sum of the x elements divided by x, using integer division.
The integer division truncates toward zero, which means losing its fractional part.
- For example, the average of four elements 2, 3, 1, and 5 is (2 + 3 + 1 + 5) / 4 = 11 / 4 = 2.75, which truncates to 2.
Solution
/**
* @param {number[]} nums
* @param {number} k
* @return {number[]}
*/
var getAverages = function(nums, k) {
const n = nums.length;
const windowSize = 2 * k + 1;
const result = new Array(n).fill(-1);
if (windowSize > n) return result;
let sum = 0;
for (let i = 0; i < windowSize; i++) {
sum += nums[i];
}
result[k] = Math.floor(sum / windowSize);
for (let i = k + 1; i < n - k; i++) {
sum = sum - nums[i - k - 1] + nums[i + k];
result[i] = Math.floor(sum / windowSize);
}
return result;
};