就是利用滑动窗口:把新的值加上,旧的值删掉,很简单的:
public static double findMaxAverage(int[] array,int k){
double sum=0;
//先计算第一个窗口的值
for (int i = 0; i < k; i++) {
sum+=array[i];
}
double max=sum; //max初始化先是第一个窗口的
for (int i = k; i < array.length; i++) {
//滑动 先减去最左再加上前进一步的那个元素
//array[i-k]就是要删掉的那个(重点理解)
sum=sum-array[i-k]+array[i];
max=Math.max(sum,max); //和上一个对比 保存最大的那个
}
return max*1.0/k;
}
public static void main(String[] args) {
int[] array=new int[]{8,-2,1,5,9,2};
System.out.println(findMaxAverage(array, 4));
}