返回首页

固定窗口:最大平均值与子数组和

一、面试常考点

1. 固定窗口优化

从 O(nk) 到 O(n),每次仅增一减一。

2. 容易错点

初始化首个窗口、更新顺序。

二、细节介绍

1. 窗口和

sum += arr[right] - arr[right-k]

2. 结果更新

每次窗口成型后更新最大值。

三、示例代码

function maxSubarraySumK(nums, k) {
  let sum = 0
  for (let i = 0; i < k; i++) sum += nums[i]
  let ans = sum

  for (let i = k; i < nums.length; i++) {
    sum += nums[i] - nums[i - k]
    ans = Math.max(ans, sum)
  }

  return ans
}

四、常用应用场景

1. 指标平滑

固定时间窗内统计。

2. 日志批次分析

每 N 条数据求局部最值。