给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且 长度为 k 的连续子数组并输出该最大平均数。 任何误差小于 10-5 的答案都将被视为正确答案。 示例 1 输入nums [1,12,-5,-6,50,3], k 4 输出12.75 解释最大平均数 (12-5-650)/4 51/4 12.75 示例 2 输入nums [5], k 1 输出5.00000 提示 n nums.length 1 k n 105 -104 nums[i] 104 虽然是简单题但容易超时from collections import defaultdict from typing import List # 超时k 很大时候sum 相当于完整算了一编数组 class Solution: def findMaxAverage(self, nums: List[int], k: int) - float: res -float(inf) arr [] for i,v in enumerate(nums): arr.append(v) if ik-1: continue avgsum(arr) resmax(res,avg) arrarr[1:] return res/k优化不用每次算一遍sum只要减去最前面那个值class Solution: def findMaxAverage(self, nums: List[int], k: int) - float: max_s -inf # 窗口元素和的最大值 s 0 # 维护窗口元素和 for i, x in enumerate(nums): # 1. 进入窗口 s x if i k - 1: # 窗口大小不足 k continue # 2. 更新答案 max_s max(max_s, s) # 3. 离开窗口 s - nums[i - k 1] return max_s / kgolangfunc findMaxAverage(nums []int, k int) float64 { var res math.MinInt var tmp 0 for i, _ : range nums { tmp nums[i] if i k-1 { continue } res max(tmp, res) tmp - nums[i-k1] } return float64(res) / float64(k) }