算法练习——子数组最大平均数 I

2021年2月4日LeetCode每日一题为643. 子数组最大平均数 I,这道题可以使用滑动窗口完成,首先将窗口数量计算出来,然后记录一个和与最大值,在遍历时,每次滑动窗口,将上一个窗口的第一个数减去,加上本次窗口的最后一个值,然后求平均值比较最大值即可完成。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public double findMaxAverage(int[] nums, int k) {
int windowCount = nums.length - k;
double sum = 0;
double max = Integer.MIN_VALUE;
for (int i = 0; i <= windowCount; i++) {
if (i == 0) {
for (int j = 0; j < k; j++) {
sum += nums[j];
}
} else {
sum = sum - nums[i - 1] + nums[i + k - 1];
}
max = Math.max(max, sum / k);
}
return max;
}
}