思路就是使用滑动窗口可以降低求和的时间复杂度。
不用每次对数组求和而是简单的加右指针减左指针就行。
注意一下注释的地方因为是直接更新,可能导致最前面的一段是最大值的被更新掉
所以采用一个tmp
def findMaxAverage(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: float
"""
res, l = 0, 0
if k >= len(nums):
return sum(nums) / float(k)
for i in range(k):
res += nums[i]
tmp = res #注意这里用一个tmp
for r in range(k, len(nums)):
tmp = (tmp + nums[r] - nums[l])
res = max(tmp, res)
l += 1
return res/float(k)