美文网首页
【算法】子数组最大平均数 - 滑动窗口

【算法】子数组最大平均数 - 滑动窗口

作者: 王月亮17 | 来源:发表于2024-04-08 16:01 被阅读0次

    题目

    给定一个数组和一个数字 n ,在数组中找到连续的 n 个平均数最大的数字。

    原理

    先选中开头的 n 个数字,计算出和并记录,然后后移窗口(减去最前面的数再加上后面的一个数),计算出新的和,取最大的和,最后计算平均数并返回。

    代码

        public static void main(String[] args) {
            System.out.println(getMaxAvg(new int[]{1, 12, -5, -6, 50, 3}, 4));
        }
    
        private static double getMaxAvg(int[] arr, int n) {
            int sum = 0;
            for (int i = 0; i < n; i++) {
                sum += arr[i];
            }
            int max = sum;
            for (int i = n; i < arr.length; i++) {
                sum = sum - arr[i - n] + arr[i];
                max = Math.max(sum, max);
            }
            return (double) max / n;
        }
    

    相关文章

      网友评论

          本文标题:【算法】子数组最大平均数 - 滑动窗口

          本文链接:https://www.haomeiwen.com/subject/nlltxjtx.html