643. 子数组最大平均数 I

难度简单148收藏分享切换为英文接收动态反馈

给定 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 <= n <= 30,000。
  • 所给数据范围 [-10,000,10,000]。

思路

使用滑动窗口,做好边界处理

代码

var findMaxAverage = function(nums, k) {
  let maxSum = 0, curSum = 0;
  for(let i = 0; i < nums.length; i ++) {
    let cur = nums[i];
    if (i < k) {
      curSum += cur;
      maxSum = curSum;
    } else {
      curSum += (-nums[i-k] + cur);
      maxSum = Math.max(maxSum, curSum);
    }
  }
  return maxSum / k
};

复杂度分析

时间复杂度 day4.[滑动窗口]643. 子数组最大平均数 I - 图1#card=math&code=O%28N%29)

空间复杂度 day4.[滑动窗口]643. 子数组最大平均数 I - 图2#card=math&code=O%281%29)