给定 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]。
代码思路:
定义一个新的数组用来存储前i项 的和,根据长度k,减掉多余的值,最后再取平均值。实现方法较为粗暴。
代码实现:
class Solution(object):
def averMam(self, nums, interval):
res = 0
sum1 = [nums[0]]
#求和
for i in range(1,len(nums)):
sum1 += [sum1[i-1] + nums[i]]
#索引位置正好的位置(即interval-1处)最后判断
for j in range(interval,len(sum1)):
#减去多加的部分
temp = sum1[j]-sum1[j-interval]
if temp > res:
res = temp
#把落下的进行比较
res = max(res, sum1[interval-1])
return res/interval