代码一思路:遍历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)