给定 n
个整数,找出平均数最大且长度为 k
的子数组,并输出该最大平均数。
例:
输入: [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,若超过则剔除,一直找到最大的k个数的和。
解题代码:
from collections import deque
class Solution(object):
def findMaxAverage(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: float
"""
s = 0
ans = float("-inf")
queue = deque([])
for num in nums:
queue.append(num)
s += num
if len(queue) > k:
s -= queue.popleft()
if len(queue) == k:
ans = max(ans, float(s) / k)
return ans