日野弥生:勉強しよう
LeetCode 643 - 子数组最大平均数 I
发表于2025年04月20日
先求滑动窗口的最大值,然后滑动过程中不断减去开头和附加末尾,循环体循环一次求一次最大值。总体时间复杂度是O(n)。
class Solution:
def findMaxAverage(self, nums: List[int], k: int) -> float:
head, tail = 0, k
summary = 0
# 注意切片法的前闭后开
for item in range(head, tail):
summary += nums[item]
maximum = summary
while tail < len(nums):
summary = summary - nums[head] + nums[tail]
tail += 1
head += 1
maximum = max(maximum, summary)
return maximum / k