[Leetcode] 346. Moving Average from Data Stream 解题报告
来源:互联网 发布:京瓷6525安装网络打印 编辑:程序博客网 时间:2024/06/05 18:43
题目:
Given a stream of integers and a window size, calculate the moving average of all integers in the sliding window.
For example,
MovingAverage m = new MovingAverage(3);m.next(1) = 1m.next(10) = (1 + 10) / 2m.next(3) = (1 + 10 + 3) / 3m.next(5) = (10 + 3 + 5) / 3
思路:
我们维护一个队列,并且保证这个队列中元素的个数不超过用户定义的窗口大小。为了将double next(int val)函数的时间复杂度从O(n)降低到O(1),我们额外维护一个当前队列元素的和sum。每次进入新元素的时候对sum进行更新。这样double next(int val)函数的时间复杂度就被降低为O(1)了,而该算法总的空间复杂度是O(n),其中n是构造函数中所定义的窗口大小。
代码:
class MovingAverage {public: /** Initialize your data structure here. */ MovingAverage(int size) { capacity = size; sum = 0; } double next(int val) { if (capacity == q.size()) { int num = q.front(); q.pop(); sum -= num; } q.push(val); sum += val; double count = static_cast<double>(q.size()); return sum / count; }private: queue<int> q; int capacity; long long sum; // in order to avoid overflow};/** * Your MovingAverage object will be instantiated and called as such: * MovingAverage obj = new MovingAverage(size); * double param_1 = obj.next(val); */
阅读全文
0 0
- [leetcode] 346. Moving Average from Data Stream 解题报告
- [Leetcode] 346. Moving Average from Data Stream 解题报告
- LeetCode 346. Moving Average from Data Stream
- LeetCode 346. Moving Average from Data Stream
- Leetcode 346 Moving Average from Data Stream
- Leetcode Everyday: 346. Moving Average from Data Stream
- Leetcode 346. Moving Average from Data Stream (Easy) (cpp)
- 346. Moving Average from Data Stream
- [LC]346. Moving Average from Data Stream
- Moving Average from Data Stream
- Moving Average from Data Stream
- LeetCode 346. Moving Average from Data Stream(数据流移动平均值)
- [leetcode] 295. Find Median from Data Stream 解题报告
- [Leetcode] 295. Find Median from Data Stream 解题报告
- [leetcode] 352. Data Stream as Disjoint Intervals 解题报告
- [Leetcode] 352. Data Stream as Disjoint Intervals 解题报告
- Moving Average of An Input Stream
- Find Median from Data Stream leetcode 295
- 51Nod-1515-明辨是非
- 程序员面试宝典试题总结
- 应用启动图标未读消息数显示 工具类
- I3C 协议的介绍以及 在sensor 传感器中的应用和实战
- Android常用开源项目(四十二)
- [Leetcode] 346. Moving Average from Data Stream 解题报告
- OV7670_SDRAM_LCD视频显示系统框架
- ionic3+angular4+cordova 项目实例
- Ext grid 排序后取消排序
- CDQZ Challenge 8
- export default 和 export 区别
- 超方便的form表单验证
- Spring-Data-JPA
- Sql注入中连接字符串常用函数