美文网首页
LintCode题解 | 高盛面试真题:子数组的最大平均值

LintCode题解 | 高盛面试真题:子数组的最大平均值

作者: SunnyZhao2019 | 来源:发表于2020-02-18 18:37 被阅读0次

【题目描述】

给定一个由n个整数组成的数组,找到给定长度k的连续子数组,该子数组具有最大平均值。你需要输出最大平均值。

1 <= k <= n <= 30,000.
给定数组的元素范围是[-10,000, 10,000]。

【题目样例】

样例1

输入: nums = [1,12,-5,-6,50,3] and k = 4
输出: 12.75
解释:
最大平均为(12-5-6+50)/4 = 51/4 = 12.75

样例2

输入: nums = [4,2,1,3,3] and k = 2
输出: 3.00
解释:
最大平均为(3+3)/2 = 6/2 = 3.00

【评测与题解】

→戳这里在线评测及查看题解

/**
* 本参考程序来自九章算法,由 @MIKE 提供。版权所有,转发请注明出处。
* - 九章算法致力于帮助更多中国人找到好的工作,教师团队均来自硅谷和国内的一线大公司在职工程师。
* - 现有的面试培训课程包括:九章算法班,系统设计班,算法强化班,Java入门与基础算法班,Android 项目实战班,
* - Big Data 项目实战班,算法面试高频题班, 动态规划专题班
* - 更多详情请见官方网站:http://www.jiuzhang.com/?source=code
*/ 

public class Solution {
    /**
     * @param nums: an array
     * @param k: an integer
     * @return: the maximum average value
     */
    public double findMaxAverage(int[] nums, int k) {
        // Write your code here
        int sum = 0;
        for (int i = 0; i < k; i++) {
            sum += nums[i];
        }
        int max = sum;
        
        for (int i = k; i < nums.length; i++) {
            sum = sum - nums[i - k] + nums[i];
            max = Math.max(max, sum);
        }
        return (double) max / k;
    }
}

相关文章

网友评论

      本文标题:LintCode题解 | 高盛面试真题:子数组的最大平均值

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