題目地址:
https://leetcode.com/problems/moving-average-from-data-stream/
設計一個數據結構,可以實現下列操作:
1、添加一個數;
2、保持數據結構存儲的數的個數小於一個給定的值,並遵循FIFO原則;
3、動態返回存儲的數的平均值。
很顯然用隊列。同時可以令開一個變量動態存儲當前隊列裏存儲的數據之和。代碼如下:
import java.util.LinkedList;
import java.util.Queue;
public class MovingAverage {
double sum;
int capacity;
Queue<Double> queue;
/** Initialize your data structure here. */
public MovingAverage(int size) {
capacity = size;
queue = new LinkedList<>();
}
public double next(int val) {
sum += val;
queue.offer((double) (val));
while (queue.size() > capacity) {
sum -= queue.poll();
}
return sum / queue.size();
}
}
時間複雜度,空間。