643 子数组最大平均数 I 简单
发布者:admin 发表于:438天前 阅读数:668 评论:0

643. 子数组最大平均数 I 简单

给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。

示例:

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

提示:

1 <= k <= n <= 30,000。

所给数据范围 [-10,000,10,000]。

代码参考:

package main

import "fmt"

func main() {
    fmt.Println(findMaxAverage([]int{0, 1, 1, 3, 3}, 4))
}

// 固定长度的子序列求和,像尺子上的蚯蚓一样向前挪...
func findMaxAverage(nums []int, k int) float64 {
    sum := 0
    for i := 0; i < k; i++ {
        sum += nums[i]
    }

    maxSum := sum
    for i := k; i < len(nums); i++ {
        // 挪动...
        sum += nums[i]
        sum -= nums[i-k]
        if sum > maxSum {
            maxSum = sum
        }
    }
    return float64(maxSum) / float64(k)
}