给定 n
个整数,找出平均数最大且长度为 k
的连续子数组,并输出该最大平均数。
示例 1:
输入: [1,12,-5,-6,50,3], k = 4 输出: 12.75 解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
注意:
- 1 <=
k
<=n
<= 30,000。 - 所给数据范围 [-10,000,10,000]。
思路:
用滑动窗口找出所有长度为k的子数组的和,每次找到之后刷新最大平均值。
class Solution(object):
def findMaxAverage(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: float
"""
# sublist = []
s = -99999
res = -99999
for i in range(len(nums) - k + 1):
if s == -99999:
s = sum(nums[:k])
else:
s -= nums[i - 1]
s += nums[i + k - 1]
# print sublist
res = max(res, s * 1.0 / k)
return res