LeetCode643. 子数组最大平均数I
题目描述
思路:滑动窗口模板
- 定义需要维护的变量
// 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;
}
}
在Java中,Double.MIN_VALUE代表正的最小值,而不是负值。具体来说,Double.MIN_VALUE是一个正数,它是最接近正零的 double 类型数值。它并不表示最小的负数值。
避坑:double max_avg = Double.MIN_VALUE;
本文作者:Ac_c0mpany丶
本文链接:https://www.cnblogs.com/keyongkang/p/17874903.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步