【Leetcode】346. Moving Average from Data Stream

題目地址:

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();
    }
}

時間複雜度O(1)O(1),空間O(capacity)O(capacity)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章