Leetcode 643. 子数组最大平均数 I

题目描述

给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。

示例 1:

输入: [1,12,-5,-6,50,3], k = 4
输出: 12.75
解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75

注意:

  1. 1 <= k <= n <= 30,000。
  2. 所给数据范围 [-10,000,10,000]。

解法

有题目可知,求出窗口大小为 k 的连续子数组的最大和,然后计算出平均数即可。

不妨以 sumV[i] 表示长度为 k 起始下标为 i 的子数组的和,则 sumV[i+1] 的值为 sumV[i]-nums[i-1]+nums[i+k-1],依次求出每个子数组的和,取最大值即可。

计算子数组的和,采用这种方式可以使得总时间复杂的为 O(n)

class Solution:
    def findMaxAverage(self, nums: List[int], k: int) -> float:
        sumV=sum(nums[:k])
        ret=sumV
        for i in range(1,len(nums)-k+1):
            sumV=sumV-nums[i-1]+nums[i+k-1]
            ret=max(sumV,ret)
        return ret/k
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,014评论 0 2
  • 描述 给出一个整数数组,有正有负。找到这样一个子数组,他的长度大于等于 k,且平均值最大。 注意事项 保证数组的大...
    6默默Welsh阅读 4,711评论 0 0
  • 643 Maximum Average Subarray I 子数组最大平均数 I Description:Giv...
    air_melt阅读 1,616评论 0 0
  • 排序算法几种分类方式: 1,稳定排序和不稳定排序 如果a==b, 当排序之前a在b的前面,排序后,a仍然在b...
    fly_ever阅读 3,196评论 0 0
  • 说起煤,你会想到什么?我想大多数人都会想到“煤老板”,但我今天想说的不是老板,而是为了生活去给煤老板挖煤的...
    d10bb5b42529阅读 2,707评论 0 0

友情链接更多精彩内容