LeetCode 346. Moving Average from Data Stream (資料流動中的移動平均值)

來源:互聯網
上載者:User

標籤:param   設計   有一個   amp   structure   第一個   solution   關鍵詞   個數   

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) = 1m.next(10) = (1 + 10) / 2m.next(3) = (1 + 10 + 3) / 3m.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 full17         {18             sum -= queue.get(0); // minus head19             queue.remove(0); // remove the head20         }21         22         queue.add(val); //append the new integer23         sum += val; // add into sum24         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

LeetCode 346. Moving Average from Data Stream (資料流動中的移動平均值)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.