leetcode 346. Moving Average from Data Stream

题目

这是一道locked题目
这是一道esay题,主要使用一个data(queue<int>)保存数据 和 sum(int)记录当前queue中元素之和。调用next函数的时候需要保证queue的大小为size,所以queue满的时候pop front,同时sum要减去即将被pop出的元素的值。然后push新的元素到queue,更新sum的值。返回值只需 sum / data/size(), 但要把sum和size都强制类型转换为double. That's it!

class MovingAverage {
public:
    /** Initialize your data structure here. */
    MovingAverage(int size) {
        this->size = size;
        sum = 0;
    }
    double next(int val) {
        if (data.size() == size) {
            sum -= data.front();
            data.pop();
        }
        data.push(val);
        sum += val;
        return (double)sum / (double)data.size();
    }
private:
    int sum;
    int size = 0;
    queue<int> data;
};

/**
 * Your MovingAverage object will be instantiated and called as such:
 * MovingAverage obj = new MovingAverage(size);
 * double param_1 = obj.next(val);
 */
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,359评论 0 33
  • 课程介绍 先修课:概率统计,程序设计实习,集合论与图论 后续课:算法分析与设计,编译原理,操作系统,数据库概论,人...
    ShellyWhen阅读 6,986评论 0 3
  • 教程一:视频截图(Tutorial 01: Making Screencaps) 首先我们需要了解视频文件的一些基...
    90后的思维阅读 10,326评论 0 3
  • 容器的概念所谓STL容器,即是将最常运用的一些数据结构(data structures)实现出来。容器是指容纳特定...
    饭饭H阅读 3,021评论 0 0
  • 噼噼啪啪 写日记的地方换了一个又一个,似乎是不喜欢自己的过去,或者过去的自己一样。 也是喜欢干净。也希望心里也是干...
    sdotmoon阅读 3,998评论 0 0

友情链接更多精彩内容