【Lintcode】642. Moving Average from Data Stream

題目地址:

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

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

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