643. 子数组最大平均数 I

 

 代码一思路:遍历nums,每一趟遍历k个元素求和s前,将s清零,不过酱超时。

 1 class Solution(object):
 2     def findMaxAverage(self, nums, k):
 3         """
 4         :type nums: List[int]
 5         :type k: int
 6         :rtype: float
 7         """
 8         res = 0
 9         if len(nums)<=k:
10             for i in range(len(nums)):
11                 res += nums[i]
12             return res/float(k)
13         i, j = 0, k - 1
14         while j < len(nums):
15             s = 0
16             for index in range(i, j + 1):
17                 s += nums[index]
18             if res <= s:
19                 res = s
20             i += 1
21             j += 1
22         return res / float(k)

代码二思路:遍历nums,每一趟遍历k个元素求和s时,用“去头加尾”的方法。

 1 class Solution(object):
 2     def findMaxAverage(self, nums, k):
 3         """
 4         :type nums: List[int]
 5         :type k: int
 6         :rtype: float
 7         """
 8         res = sum(nums[:k])
 9         ans = res
10         for i in range(k, len(nums)):
11             res = res - nums[i - k] + nums[i]
12             ans = max(ans, res)
13         return ans / float(k)
原文地址:https://www.cnblogs.com/panweiwei/p/12799865.html