连续且长度为k,可联想到滑动窗口,此题是典型的简单滑动窗口例题。
滑动窗口window为大小为k,首先计算最初长度为k的数组和,之后滑动窗口的和则为减去滑动窗口起始点且加上滑动窗口结束点的下一位置值,最大平均数即为所有滑动窗口中和最大的值。
class Solution:
def findMaxAverage(self, nums: List[int], k: int) -> float:
begin, sum_ = 1, 0
for j in range(k):
sum_ += nums[j]
max_ = sum_
while begin <= len(nums) - k:
sum_ -= nums[begin - 1]
sum_ += nums[begin + k - 1]
begin += 1
max_ = sum_ if sum_ > max_ else max_
return max_ / k