题目:
给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。
请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。
任何误差小于 10-5 的答案都将被视为正确答案。
示例:
输入:nums = [1,12,-5,-6,50,3], k = 4
输出:12.75
解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
方法一:
可以使用滑动窗口方法进行求解,直观上来理解的话就是一个长度为k的窗口在数组上进行滑动,每次求窗口中的子数组的和,比较大小。最后返回最大平均数。其具体代码如下:
# 滑动窗口
def fun1(nums, k):
sums = sum(nums[0:k]) # 先统计第一个窗口的和,初始化
n = len(nums)
maxs = sums
for i in range(k,n): # 从k到n
sums = sums - nums[i-k] + nums[i] # 剪去上一个窗口的第一个值,加上本窗口新的值
maxs = sums if sums > maxs else maxs
return maxs/k
网友评论