前言
- 这道题主要考察的是滑动窗口的算法思想,通过这一思想可以快速的做出来
- 题目网址:https://leetcode-cn.com/problems/maximum-average-subarray-i/
解法:滑动窗口
-
滑动窗口这个方法的思想很简单,就是通过减去前一个,加上后一个的思想,遍历完数组,然后通过 max 来记录最大值,最后返回
-
第一步:先将前 k 个数字加起来,得到2
-
第二步,将 索引 i - k 的数字减去,加上索引 k 的数字,得到值 51 ,依次这样循环
-
第三步将最大值max 除去k得到答案
-
代码如下:
class Solution {
public double findMaxAverage(int[] nums, int k) {
int n = nums.length;
int sum = 0;
for(int i=0;i<k;i++){
sum += nums[i];
}
int max = sum;
for(int i=k;i<n;i++){
sum = sum - nums[i-k] + nums[i];
max = Math.max(sum,max);
}
return 1.0 * max/k;
}
}
总结
这道题很简单,你们可以上力扣看看他的变式