滑动窗口子数组平均值

class Solution {
public:
    // vector<int> getAverages(vector<int>& nums, int k) {
    //     if(k == 0) return nums;
    //     if(2*k+1>nums.size()) return vector<int>(nums.size(), -1);
    //     vector<int> res;
    //     int win_sum = 0;
    //     for(int i = 0; i<k; i++){
    //       res.push_back(-1);
    //       win_sum+=nums[i];
    //     }

    //     for(int i = k; i<nums.size()-k; i++){
    //       for(int j = i-k; j<i+k+1; j++){
    //         win_sum+= nums[j];
    //       }
    //       res.push_back(win_sum/(2*k+1));
    //       win_sum = 0;
    //     }
    //     for(int i = nums.size()-k; i<nums.size(); i++){
    //       res.push_back(-1);
    //     }
    //     return res;
    // }
    vector<int> getAverages(vector<int>& nums, int k) {
        int n = nums.size();
        vector<int> res(n, -1);
        if(k*2+1<=n){
            long long sum = accumulate(nums.begin(), nums.begin() + 2*k+1, 0ll);
            for(int i = k; i+k<n; i++){
                if(i!=k){
                    sum+= nums[k+i] - nums[i-k-1];
                }
                res[i] = sum/(2*k + 1);
            }
        }
        return res;
    }
};
原文地址:https://www.cnblogs.com/qianxunslimg/p/15672572.html