📅  最后修改于: 2023-12-03 15:12:40.174000             🧑  作者: Mango
Gate-CS-2003,第 80 题
给定一个包含n个整数的数组,找到一个长度为k的连续子数组,使得这个子数组具有最大的平均值。
def find_max_average(nums: List[int], k: int) -> float:
pass
返回最大的平均值, 保留小数点后5位.
输入:
nums = [1,12,-5,-6,50,3], k = 4
输出:
12.75000
解释:最大平均值子数组为[12, -5, -6, 50], 其平均值为(12-5-6+50)/4 = 12.75.
题目要求的是求长度为k的子数组的最大平均值, 那么我们可以使用滑动窗口, 依次枚举每个长度为k的子数组, 并求出它的平均值, 最后取平均值的最大值即可.
from typing import List
def find_max_average(nums: List[int], k: int) -> float:
cur_sum = sum(nums[:k])
max_sum = cur_sum
for i in range(k, len(nums)):
cur_sum += nums[i] - nums[i - k]
max_sum = max(max_sum, cur_sum)
return round(max_sum / k, 5)
说明: