{"id":10827,"date":"2018-12-31T07:25:46","date_gmt":"2018-12-31T07:25:46","guid":{"rendered":"http:\/\/www.softwareeverydayblog.com\/?p=10827"},"modified":"2018-12-31T07:38:00","modified_gmt":"2018-12-31T07:38:00","slug":"programming-problem-moving-average-from-data-stream","status":"publish","type":"post","link":"https:\/\/www.softwareeverydayblog.com\/?p=10827","title":{"rendered":"[Leetcode] Moving Average from Data Stream"},"content":{"rendered":"<p>Given a stream of integers and a window size, calculate the moving average of all integers in the sliding window.<\/p>\n<p><strong>Example<\/strong>:<\/p>\n<pre lang=\"text\">\r\nMovingAverage m = new MovingAverage(3);\r\nm.next(1) = 1\r\nm.next(10) = (1 + 10) \/ 2\r\nm.next(3) = (1 + 10 + 3) \/ 3\r\nm.next(5) = (10 + 3 + 5) \/ 3\r\n<\/pre>\n<p>[<a href=\"https:\/\/leetcode.com\/problems\/moving-average-from-data-stream\/description\/\" rel=\"noopener\" target=\"_blank\">Problem Link<\/a>]<\/p>\n<p>Use (and keep updating) the running total of the List to help calculate the moving average in O(1) time.<\/p>\n<pre lang=\"java\">\r\nclass MovingAverage {\r\n    \r\n    List<Integer> nums;\r\n    double sum;\r\n    int size;\r\n    \r\n    \/** Initialize your data structure here. *\/\r\n    public MovingAverage(int size) {\r\n        this.nums = new ArrayList<Integer>();\r\n        this.sum = 0;\r\n        this.size = size;\r\n    }\r\n    \r\n    public double next(int val) {\r\n        nums.add(val);\r\n        if ( nums.size() <= this.size ) {\r\n            this.sum += val;\r\n            return this.sum\/nums.size();\r\n        }        \r\n        int num = nums.remove(0);\r\n        this.sum = this.sum - num + val;\r\n        return this.sum\/nums.size();\r\n    }\r\n}\r\n\r\n\/**\r\n * Your MovingAverage object will be instantiated and called as such:\r\n * MovingAverage obj = new MovingAverage(size);\r\n * double param_1 = obj.next(val);\r\n *\/\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Given a stream of integers and a window size, calculate the moving average of all integers in the sliding window. 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 [Problem [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-10827","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.softwareeverydayblog.com\/index.php?rest_route=\/wp\/v2\/posts\/10827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.softwareeverydayblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.softwareeverydayblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.softwareeverydayblog.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.softwareeverydayblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10827"}],"version-history":[{"count":6,"href":"https:\/\/www.softwareeverydayblog.com\/index.php?rest_route=\/wp\/v2\/posts\/10827\/revisions"}],"predecessor-version":[{"id":10830,"href":"https:\/\/www.softwareeverydayblog.com\/index.php?rest_route=\/wp\/v2\/posts\/10827\/revisions\/10830"}],"wp:attachment":[{"href":"https:\/\/www.softwareeverydayblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.softwareeverydayblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.softwareeverydayblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}