给出一个整数数字,有正有负,找一个长度大于等于k的一个子数组(即数组中相邻的k个数),使他的平均值最大。
示例:
给出 nums = [1,12,-5,-6,50,3],k=3, 返回 15.667 // (-6+50+3) / 3 = 15.667
class Solution:
def findMaxAverage(self, nums, k):
left, right, cur_sum = 0, k, sum(nums[:k])
max_sum = cur_sum
while right < len(nums):
cur_sum = cur_sum + nums[right] - nums[left]
max_sum = max(max_sum, cur_sum)
left, right = left + 1, right + 1
return round((max_sum / k), 3)
if __name__ == '__main__':
sol = Solution()
nums = [1, 12, -5, -6, 50, 3]
k = 3
print(sol.findMaxAverage(nums, k))
# 15.667