问题描述:
给定一个包含n个整数的数组,找出指定长度为k的连续子数组的最大平均值。例如[1,12,-5,-6,50,3],k=4,则输出为12.75,这个连续子数组为12,-5,-6,50.元素范围为[-10000,10000]
解决方案—-滑动窗口思想
用以上问题为例,以k个元素为整体每次向右滑动1个单位,找出最大值,最后求平均值。
class Solution {
public double findMaxAverage(int[] nums, int k) {
double sum=0;double count=0;
for(int i=0;i<k;i++){
sum+=nums[i];
}
count=sum;
for(int i=k;i<nums.length;i++){
sum+=nums[i]-nums[i-k];//相当于每次向右滑动
count=Math.max(count,sum);
}
return count/k;
}
}