Moving Average from Data Stream

Published by

on

Problem

Solution

class MovingAverage {
    
    private static Queue<Integer> queue;
    private static int size;

    public MovingAverage(int size) {
        queue = new LinkedList<>();
        this.size = size;
    }
    
    public double next(int val) {
        if (isFull()) {
            queue.poll();
        }
        
        queue.add(val);
        
        int sum = 0;
        for (Integer value : queue) {
            sum += value;
        }
        return (double) sum / queue.size();
    }
    
    private boolean isFull() {
        return queue.size() == this.size;
    }
    
}

Queue를 쓰는 것 뿐만 아니라, Deque를 사용해서 구현 가능했다.

Deque queue = new ArrayDeque<Integer>();

Leave a comment