C++ 中的最大平均子数组 I
假设我们有一个包含 n 个元素的数组,我们需要找到长度为 k 的连续子数组,该子数组具有最大的平均值。我们需要返回最大的平均值。
因此,如果输入类似于 [1,13,-5,-8,48,3],且 k = 4,那么输出将为 12.0,因为 (13-5-8+48)/4 = 12.0。
为了解决这个问题,我们将遵循以下步骤 −
sum := 0
for 初始化 i := 0,当 i < k 时,更新(将 i 增加 1),执行 −
sum := sum + nums[i]
maxi := sum
for 初始化 i := k,当 i < nums 的大小时,更新(将 i 增加 1),执行 −
sum := sum + nums[i] - nums[i - k]
if sum > maxi,则 −
maxi := sum
return maxi / k
示例
下面我们来看一下实现过程,以便加深理解 −
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
int sum = 0;
for (int i = 0; i < k; i++) {
sum += nums[i];
}
double maxi = sum;
for (int i = k; i < nums.size(); i++) {
sum += nums[i] - nums[i - k];
if (sum > maxi) {
maxi = sum;
}
}
return maxi / k;
}
};
main(){
Solution ob;
vector<int> v = {1,13,-5,-8,48,3};
cout << (ob.findMaxAverage(v, 4));
}输入
{1,13,-5,-8,48,3}, 4输出
12
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
JavaScript
PHP