您的位置:首页 > 编程语言 > C语言/C++

Leetcode 643:子数组最大平均数 (C++)

2018-03-30 20:47 946 查看
题目要求:给定
n
个整数,找出平均数最大且长度为
k
的子数组,并输出该最大平均数。
例:输入: [1,12,-5,-6,50,3], k = 4
输出: 12.75
解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
思路:由于k值给定,因此只需要求出数组中连续k个和最大的数。
          首先将前k个数的和保存到tmp中,res始终保存当前最大和。
          将数组后面的数一个一个加到tmp中,相应的也要减去tmp中保存的第一个数。
          比较tmp和res的大小,及时更新res。
代码:
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
double res=0;
int tmp=0;
for(int i=0;i<nums.size();i++){
if(i<k){
tmp+=nums[i];
res=tmp;
continue;
}
tmp=tmp+nums[i]-nums[i-k];
if(tmp>res)
res=tmp;
}
return res/k;
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C LeetCode