題目地址:
https://www.lintcode.com/problem/moving-average-from-data-stream/description
要求設計一個數據結構,可以實現:
1、添加數據;
2、數據結構維持size小於等於一個給定數,並且FIFO,可以實時返回結構中所有數字的平均數。
直接用隊列即可。代碼如下:
import java.util.ArrayDeque;
import java.util.Queue;
public class MovingAverage {
Queue<Integer> queue;
double sum;
int size;
/*
* @param size: An integer
*/
public MovingAverage(int size) {
// do intialization if necessary
queue = new ArrayDeque<>();
this.size = size;
}
/*
* @param val: An integer
* @return:
*/
public double next(int val) {
// write your code here
queue.offer(val);
sum += val;
if (queue.size() > size) {
sum -= queue.poll();
}
return sum / queue.size();
}
}
時間複雜度,空間。