643.子数组的最大平均数I

from typing import List
# 这道题使用滑动窗口的方法来做的,定义一个长度为k的滑动窗口
# 向右滑动,计算每次滑动窗口中数字的和,最后算出最大值。
class Solution:
def findMaxAverage(self, nums: List[int], k: int) -> float:
# 求出数组的长度。
length = len(nums)
# 判断数组的长度是否小于k
if length < k:
return 0
# 定义每次滑动窗口中数字的和。
sum_num = 0
# 定义每次滑动窗口的最大值。
res = float('-inf')
# 进行遍历。滑动窗口为i-k + 1 - i
for i in range(length):
# 每次加上 index 为 i 的数字。
sum_num += nums[i]
# 如果i大于k那么此时滑动窗口中的数是 k + 1个,
if i >= k:
# 因此需要减去最左边那个。
sum_num -= nums[i - k]
# 每次计算,比较 数组和的最大值。
if i >= k -1:
res = max(sum_num,res)
# 最后返回平均值。
return res / k
A = Solution()
print(A.findMaxAverage([1,12,-5,-6,50,3],4))
posted @ 2021-02-04 13:31  月为暮  阅读(45)  评论(0编辑  收藏  举报