c++滑动窗口求平均值
时间: 2023-11-08 11:05:12 浏览: 220
滑动平均算法
4星 · 用户满意度95%
好的,针对你的问题,我可以给出以下代码实现:
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<double> slidingWindowAverage(vector<int>& nums, int k) {
vector<double> res;
double sum = 0;
for (int i = 0; i < nums.size(); i++) {
sum += nums[i];
if (i >= k) {
sum -= nums[i - k];
}
if (i >= k - 1) {
res.push_back(sum / k);
}
}
return res;
}
int main() {
vector<int> nums = {1, 3, -1, -3, 5, 3, 6, 7};
int k = 3;
vector<double> res = slidingWindowAverage(nums, k);
for (double num : res) {
cout << num << " ";
}
cout << endl;
return 0;
}
```
其中,slidingWindowAverage 函数接受一个整数数组 nums 和一个整数 k,返回一个双精度浮点数数组,表示 nums 中每个长度为 k 的连续子数组的平均值。具体实现是通过维护一个长度为 k 的滑动窗口,每次向右移动一位,并计算窗口内元素的和,然后将窗口左侧的元素从和中减去,最后计算平均值并加入结果数组中。
对于你的相关问题,我可以回答以下几点:
相关问题:
1. 如何处理 nums 数组长度小于 k 的情况?
2. 如何处理 k 为 0 或负数的情况?
3. 如何处理 nums 数组为空的情况?
阅读全文