题目描述
思路:滑动窗口模板
- 定义需要维护的变量
// 1. 定义需要维护的变量
double sum = 0;
double max_avg = Integer.MIN_VALUE;
- 窗口固定大小为k,所以用if
if (end - start + 1 == k) {
sum -= nums[start];
start += 1;
}
方法一:
class Solution {
public double findMaxAverage(int[] nums, int k) {
// 1. 定义需要维护的变量
double sum = 0;
double max_avg = Integer.MIN_VALUE;
// 2. 定义窗口边界
int start = 0;
for (int end = 0; end < nums.length; end ++ ) {
// 3. 更新需要维护的变量
sum += nums[end];
if (end - start + 1 == k) {
max_avg = Math.max(max_avg, sum / k);
}
// 4. 根据题意可知,窗口长度固定为k,所以用if
// 收缩窗口 其实可以和上面代码合并一起,在这里主要是为了体现框架
if (end - start + 1 == k) {
sum -= nums[start];
start += 1;
}
}
// 5. 返回结果
return max_avg;
}
}
标签:end,平均数,sum,double,start,LeetCode643,数组,max,avg From: https://www.cnblogs.com/keyongkang/p/17874903.html在Java中,Double.MIN_VALUE代表正的最小值,而不是负值。具体来说,Double.MIN_VALUE是一个正数,它是最接近正零的 double 类型数值。它并不表示最小的负数值。
避坑:double max_avg = Double.MIN_VALUE;