美文网首页
力扣(LeetCode)之子数组最大平均数

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

作者: 小黄不头秃 | 来源:发表于2023-09-23 02:42 被阅读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 
    

    相关文章

      网友评论

          本文标题:力扣(LeetCode)之子数组最大平均数

          本文链接:https://www.haomeiwen.com/subject/zafrvdtx.html