其他分享
首页 > 其他分享> > 每日一题:643. 子数组最大平均数 I

每日一题:643. 子数组最大平均数 I

作者:互联网

经典滑动窗口
左指针和右指针不断向右移动,达到求出所有子数组的目的
再进行/k就得到了平均数
因为double的计算比int慢 所以只在最终求结果时将sum转成double类型
sum就是需要维护的总数 每次减去出队的第一个再加上进队的最后一个即可

class Solution {
    public double findMaxAverage(int[] nums, int k) {
        double ans = -9999999;
        int left = 0,right = 0;
        int sum = 0;
        for (int i=0;i<k;i++){
            sum+=nums[right];
            right++;
        }
        ans=Math.max((double)sum/k,ans);
        while(right<nums.length){
            sum-=nums[left];
            left++;
            sum+=nums[right];
            right++;
            ans=Math.max((double)sum/k,ans);
        }
        return ans;
    }
}

标签:right,nums,int,平均数,sum,double,643,数组,ans
来源: https://blog.csdn.net/weixin_45221477/article/details/113638362