首页 > 其他 > 详细

[Leetcode]643.Maximum Average Subarray I

时间:2020-01-18 22:58:33      阅读:101      评论:0      收藏:0      [点我收藏+]

链接:LeetCode643

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

示例 1:

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

相关标签:滑动窗口

重点在于构造滑动窗口,以\(k\)为窗口大小往后滑动,注意判空即可。代码如下:

python:

class Solution:
    def findMaxAverage(self, nums: List[int], k: int) -> float:
        if not nums:
            return 0
        cur = res = sum(nums[:k])
        start = 0
        for end in range(k,len(nums)):
            cur += -nums[start]+nums[end]
            start += 1
            res = max(cur,res)
        return res/k

C++:

class Solution {
public:
    double findMaxAverage(vector<int>& nums, int k) {
        if(nums.empty()){
            return 0;
        }
        double start,cur,res;
        start  = cur = res = 0;
        for(int i = 0;i<k;i++){
            cur += nums[i];
        }
        res = cur;
        for(int i=k;i<nums.size();i++){
            cur += nums[i]-nums[start];
            start += 1;
            res = max(res,cur);
        }
        return res/k;
    }
};

[Leetcode]643.Maximum Average Subarray I

原文:https://www.cnblogs.com/hellojamest/p/12210456.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!