代码
class Solution {
public double findMaxAverage(int[] nums, int k) {
int max = 0; //完成最开始的灰盒建立
for(int i = 0; i<k;i++){
max += nums[i];
}
int reMax = max; //赋值给最大值(假设它为最大)
for(int i = 1;i<nums.length-k+1;i++){ //移动灰盒
int max2 = max - nums[i-1] +nums[i+k-1];
if(nums[i+k-1]- nums[i-1] >0 && reMax<max2) //当灰盒数量是上升趋势且现在灰盒比之前灰盒最大还大时,将现在的灰盒赋值给最大灰盒
reMax = max2;
max = max2;//移动灰盒
}
return ((double)reMax)/k;
}
}
思路
将k看成一个灰盒,平移这个灰盒,找到灰盒中最大的即可。
使用时间
9 ms