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

LintCode 868. 子数组的最大平均值 JavaScript算法

程序员文章站 2022-03-24 17:52:55
...

描述

给定一个由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

解析

findMaxAverage = function (nums, k) {
    if (nums == null || nums.length === 0) return 0
    let len = nums.length
    let sum = 0
    for (let i=0; i<k; i++) {
        sum += nums[i]
    }
    let max = sum
    for (let i=k; i<len; i++) {
        sum += nums[i] - nums[i-k]
        max = Math.max(max, sum)
    }
    return max / k
}

运行结果

LintCode 868. 子数组的最大平均值 JavaScript算法
LintCode 868. 子数组的最大平均值 JavaScript算法