力扣643
class Solution
{
public double findMaxAverage(int[] nums, int k)
{
//其实就是求出窗口长度为k时,窗口内元素加起来的最大值
//(最大值最大,窗口长度一样,平均值肯定最大)
//显然当窗口在移动时,窗口内的和等于 加上新加进来的值,减去移处窗口的值
int window=0;
//先求出第一个窗口内所有元素的和
for(int i=0;i<k;i++)
{
window=window+nums[i];
}
double max=0;
max=window;
//上面加到了nums[k-1],现在从nums[k]开始加,一直加到最后
for(int i=k;i<nums.length;i++)
{
//窗口向右移动,每次加一个数,减一个数
window=window+nums[i]-nums[i-k];
max=Math.max(window,max);
}
return max/k;
}
}