欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode 643.子数组最大平均数

程序员文章站 2022-07-15 23:24:21
...

原题如下

leetcode 643.子数组最大平均数

题解

方法一

求和法

/*求和法
 *作者@v7fgg
 *执行用时 :2 ms, 在所有 Java 提交中击败了99.91%的用户
 *内存消耗 :43 MB, 在所有 Java 提交中击败了16.67%的用户
 *2020年6月7日 20:19
 */
class Solution {
    public double findMaxAverage(int[] nums, int k) {
        int sum=0;
        for(int i=0;i<k;i++){
            sum+=nums[i];
        }
        int ans=sum;
        for(int j=k;j<nums.length;j++){
            sum=sum+nums[j]-nums[j-k];
            ans=Math.max(ans,sum);
        }return (double)ans/k;
    }
}

方法二

数组作差法

/*数组作差法
 *作者@v7fgg
 *执行用时 :4 ms, 在所有 Java 提交中击败了72.12%的用户
 *内存消耗 :42.9 MB, 在所有 Java 提交中击败了16.67%的用户
 *2020年6月7日 20:32
 */
class Solution {
    public double findMaxAverage(int[] nums, int k) {
        int sum[]=new int[nums.length];
        sum[0]=nums[0];
        for(int i=1;i<nums.length;i++){
            sum[i]=nums[i]+sum[i-1];
        }
        int ans=sum[k-1];
        for(int j=k;j<nums.length;j++){
            ans=Math.max(ans,sum[j]-sum[j-k]);
        }return (double)ans/k;
    }
}