难度:简单

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

    示例:

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

    解题思路:

    1. 遍历数组,取出k个连续数组计算值
    2. 使max等于取出第一个数组的值
    3. 若后续数组所得值大于max,则赋值于max
    var findMaxAverage = function(nums, k) {
          let max;
          let i = 0;
          while (i < nums.length - k + 1) {
            let n = 0;
            let arr = nums.slice(i, k + i);
            arr.forEach((element) => {
              n = n + element;
            });
            if (i === 0) {
              max = n / k;
            }
            if (max < n / k) {
              max = n / k;
            }
            i++;
          }
          return max;
    };
    

    滑动窗口
    一次遍历,当累加的元素数量小于等于k时(i当累加的元素数量大于k时(i>=k)),累加当前元素,并删除第i-k个元素,然后max取sum和之前值较大的一个

    var findMaxAverage = function(nums, k) {
        var sum=0;
        for(var i=0;i<k;i++){
            sum += nums[i];
        }
        var max=sum;
        for(var i=k;i<nums.length;i++){
            sum += nums[i]-nums[i-k];
            max = Math.max(max,sum);
        }
        return max/k;
    };