leetcode - 子数组最大平均值

给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。
示例:

输入:[1,12,-5,-6,50,3], k = 4
输出:12.75
解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
提示:
1 <= k <= n <= 30,000。
-所给数据范围 [-10,000,10,000]

public class Main {
    public static void main(String[] args) {
        int[] in = {1, 12, -5, -6, 50, 3};
        int k = 4;
        int sum = 0;
        int n = in.length;

        // 求出初始K个数组大小的总数
        for (int i = 0; i < k; i++) {
            sum = sum + in[i];
        }
        int maxSum = sum;

        // 遍历从K开始知道最大值之间的值,求出总体数组中最大的值
        for (int i = k; i < n; i++) {
            //减去最小值,加上最大值,来回和sum值比较,用来更新max值
            sum = sum - in[i - k] + in[i];
            
            // 比较获取最大值
            maxSum = Math.max(maxSum, sum);
        }
        float averageValue = maxSum * 1.0F / k;
        System.out.println(averageValue);
    }
}
posted @ 2022-07-23 17:38  西北野狼  阅读(70)  评论(0编辑  收藏  举报