前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 643. 子数组最大平均数 I

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

作者头像
zhipingChen
发布2019-12-02 21:21:06
5360
发布2019-12-02 21:21:06
举报
文章被收录于专栏:编程理解编程理解

题目描述

给定 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)

代码语言:javascript
复制
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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档