力扣(LeetCode)之子数组最大平均数

2023-09-23  本文已影响0人  小黄不头秃
题目:

给你一个由 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 
上一篇下一篇

猜你喜欢

热点阅读