算法练习-子数组最大平均值

341 阅读1分钟

给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。

输入: [1,12,-5,-6,50,3], k = 4
输出: 12.75
解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75

==========分割线==========

滑窗法

var findMaxAverage = function(nums, k) {
    var maxSum = nums.slice(0, k).reduce((x, y){return x + y}, 0);
    var currentSum = maxSum;
    var numsLen = nums.length;
    
    for(var i = 0; i < numsLen - k; i++) {
        currentSum = currentSum + nums[i + k] - nums[i];// 循环一猜,向后推进一次
        maxSum = Math.max(maxSum, currentSum);
    }
    return maxSum / k
};