LeetCode75-643-Max-Avg-Subarray-I

🧠 思路总结

什么时候用Sliding Window?

  • 当答案来自 一段连续区间,而且区间可以通过左右边界移动得到时,用滑动窗口。

为什么这道题目用Sliding Window?

  • 连续区间
  • 固定长度
  • 暴力 O(nk), 滑动窗口 O(n)

做法:

  1. 先算第一个窗口的 sum
  2. 窗口右移:
    • 加上右边新元素
    • 减去左边移除的元素
  3. 更新最大 sum

✅ 代码(Java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public double findMaxAverage(int[] nums, int k) {
int sum = 0;
for (int i = 0; i < k; i++) {
sum += nums[i];
}
int maxSum = sum;
int left = 0;
for (int i = k; i < nums.length; i++) {
sum += nums[i];
sum -= nums[left]; // 也可以 (sum -= nums[i - k],这样不需要left)
left++;
maxSum = Math.max(sum, maxSum);
}
return (double)maxSum / k;
}
}

LeetCode75-643-Max-Avg-Subarray-I
https://powersixxx.github.io/leetcode-blog/2026/02/02/LeetCode75-643-Max-Avg-Subarray-I/
作者
Baowen Liu
发布于
2026年2月2日
许可协议