[LeetCode]643. Maximum Average Subarray I
题目描述
思路
滑窗统计k个数的和,同时保留最大和,结果返回最大和/k
代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
double max_sum = 0, cur_sum = 0;
for (int i = 0; i < nums.size(); ++i) {
if (i < k) {
cur_sum += nums[i];
max_sum = cur_sum;
}
else {
cur_sum += nums[i];
cur_sum -= nums[i - k];
max_sum = max(max_sum, cur_sum);
}
}
return max_sum / k;
}
};
int main() {
vector<int> nums = { 1,12,-5,-6,50,3 };
int k = 4;
Solution s;
cout << s.findMaxAverage(nums, k) << endl;
system("pause");
return 0;
}
本文介绍了一种使用滑动窗口解决LeetCode上643题目的方法,该方法通过维护一个长度为k的滑动窗口来计算数组中连续子数组的最大平均值。通过不断更新当前窗口内的元素和,并与已记录的最大和进行比较,最终得出最大平均值。
424

被折叠的 条评论
为什么被折叠?



