美文网首页
346. Moving Average from Data St

346. Moving Average from Data St

作者: Jeanz | 来源:发表于2017-08-24 04:04 被阅读0次

    Given a stream of integers and a window size, calculate the moving average of all integers in the sliding window.

    For example,

    MovingAverage m = new MovingAverage(3);
    m.next(1) = 1
    m.next(10) = (1 + 10) / 2
    m.next(3) = (1 + 10 + 3) / 3
    m.next(5) = (10 + 3 + 5) / 3
    

    一刷
    题解:首先要思考需要些什么变量
    一个收尾相连的长度为size的数组,一个指向被替代位置的int, 一个当前数组含有多少个元素的int

    class MovingAverage {
        int[] window;
        int insert, n;
        long sum;
    
        /** Initialize your data structure here. */
        public MovingAverage(int size) {
            window = new int[size];
            insert = 0;
            n = 0;
        }
        
        public double next(int val) {
            if(n<window.length){
                window[n++] = val;
                sum+=val;
            }else{
                sum -= window[insert];
                sum += val;
                window[insert] = val;
                insert++;
                insert = insert%window.length;
            }
            return (double)sum/n;
        }
    }
    
    /**
     * Your MovingAverage object will be instantiated and called as such:
     * MovingAverage obj = new MovingAverage(size);
     * double param_1 = obj.next(val);
     */
    

    相关文章

      网友评论

          本文标题:346. Moving Average from Data St

          本文链接:https://www.haomeiwen.com/subject/txrsdxtx.html