leetcode 滑动窗口

力扣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;

    }
}

猜你喜欢

转载自blog.csdn.net/weixin_47414034/article/details/125458394