算法笔记: leetcode#346 moving average from data stream

问题描述


解法


Python 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class :
def __init__(self, size):
"""
Initialize your data structure here.
:type size: int
"""
self._size = size
self._array = []
self._sum = 0
def next(self, val):
"""
:type val: int
:rtype: float
"""
self._sum += val
self._array.append(val)
if len(self._array) > self._size:
self._sum -= self._array.pop(0)
return self._sum / len(self._array)
# obj = MovingAverage(size)
# param_1 = obj.next(val)

Java 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class {
/** Initialize your data structure here. */
private int size;
private ArrayList<Integer> array;
private int sum;
public (int size) {
this.size = size;
this.array = new ArrayList<>();
this.sum = 0;
}
public double next(int val) {
this.sum += val;
this.array.add(val);
if(this.array.size() > this.size){
this.sum -= this.array.remove(0);
}
return (1.0 * this.sum) / this.array.size();
}
}
/**
* Your MovingAverage object will be instantiated and called as such:
* MovingAverage obj = new MovingAverage(size);
* double param_1 = obj.next(val);
*/

链接


346. Moving Average from Data Stream
(English version) Algorithm Notes: Leetcode#346 Moving Average from Data Stream