C++零基础算法100题 - 滑动窗口的平均值

253 阅读1分钟

题目链接: 933. 最近的请求次数 - 力扣(LeetCode)

题目描述

image.png

解题思路

  1. 由于是滑动窗口,我们首先定义一个vector
  2. 然后我们定义要返回的next值存储的sum
  3. 初始化滑动窗口的大小
  4. 我们每进来一个元素,idx往后面移动一位,并且sum减去idx的位数
  5. next计算返回sum的结果

代码实现

class MovingAverage {
    vector<int> arr;
    int sum;
    int size;
    // 滑动窗口移动到哪个元素去了
    int idx;
public:
    /** Initialize your data structure here. */
    MovingAverage(int size) {
        size=size;
        sum=0;
        idx=0;
    }
    
    double next(int val) {
        arr.push_back(val);
        sum+=val;
        if(arr.size()>size){
            sum-=arr[idx++];
        }
        return sum*1.0/(arr.size()-idx);
    }
};

/**
 * Your MovingAverage object will be instantiated and called as such:
 * MovingAverage* obj = new MovingAverage(size);
 * double param_1 = obj->next(val);
 */