美文网首页
P16-子数组最大平均数-滑动窗口

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

作者: YonchanLew | 来源:发表于2021-05-14 16:16 被阅读0次
    //子数组最大平均数
    /*
    * 给一个整数数组,找出平均数最大且长度为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;
        }
    }
    

    相关文章

      网友评论

          本文标题:P16-子数组最大平均数-滑动窗口

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