P16-子数组最大平均数-滑动窗口

2021-05-14  本文已影响0人  YonchanLew
//子数组最大平均数
/*
* 给一个整数数组,找出平均数最大且长度为k的下标连续的子数组,并输出该最大平均数
* 输入 [1,12,-5,-6,50,3], k=4
* 输出12.75
* (12-5-6+50)/4
* */
public class P16 {
    public static void main(String[] args) {
        System.out.println(findMaxAverage(new int[]{1,12,-5,-6,50,3}, 4));
    }

    //滑动窗口
    public static double findMaxAverage(int[] nums, int k){
        int sum = 0;
        int n = nums.length;

        //先统计第一个窗口的和
        for (int i = 0; i < k; i++) {
            sum += nums[i];
        }

        int max = sum;
        for(int i=k; i<n; i++){
            //移动
            sum = sum - nums[i-k] + nums[i];
            max = Math.max(sum, max);
        }

        return 1.0 * max / k;
    }
}
上一篇下一篇

猜你喜欢

热点阅读