zoukankan      html  css  js  c++  java
  • LeetCode 346. Moving Average from Data Stream (数据流动中的移动平均值)$

    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
    

    题目标签:Design

      这道题目让我们设计一个移动平均值的结构,我们有一个input size, 这个size是控制着我们的window。每次都新的数字进来,如果目前的size小于window,那么继续加入。如果新的数字进来,size已经满了,等于window size。那么我们需要把第一个数字去除,然后加入新的数字。可以利用ArrayList来模仿queue实现,add 加入到最后, remove(0) 把第一个数字去除。还要设一个sum, 每次加入,就加入sum, 当满了之后,每次去除,只要从sum里减去。这样就可以避免每一次加入一个数字的时候,都要遍历一次queue来得到所有数字之和。

    Java Solution:

    Runtime beats 71.48% 

    完成日期:07/09/2017

    关键词:Design

    关键点:利用ArrayList来模仿Queue

     1 public class MovingAverage {
     2 
     3     ArrayList<Integer> queue;
     4     int queue_size; 
     5     double sum;
     6     /** Initialize your data structure here. */
     7     public MovingAverage(int size) 
     8     {
     9         queue = new ArrayList<>(size);
    10         queue_size = size;
    11         sum = 0;
    12     }
    13     
    14     public double next(int val) 
    15     {
    16         if(queue.size() == queue_size) // meaning it is full
    17         {
    18             sum -= queue.get(0); // minus head
    19             queue.remove(0); // remove the head
    20         }
    21         
    22         queue.add(val); //append the new integer
    23         sum += val; // add into sum
    24         
    25         return (sum / queue.size());    
    26     }
    27 }
    28 
    29 /**
    30  * Your MovingAverage object will be instantiated and called as such:
    31  * MovingAverage obj = new MovingAverage(size);
    32  * double param_1 = obj.next(val);
    33  */

    参考资料:N/A

    LeetCode 算法题目列表 - LeetCode Algorithms Questions List

  • 相关阅读:
    poj 3378 Crazy Thairs 夜
    1487. Chinese Football 夜
    容斥原理
    Dancing Links
    三角剖分
    模线性方程模板
    模线性方程
    容斥原理 POJ2773
    DNA Sequence [矩阵]
    hdu 2588 容斥
  • 原文地址:https://www.cnblogs.com/jimmycheng/p/7144032.html
Copyright © 2011-2022 走看看