Leetcode: 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
Queue method:
1 public class MovingAverage {
2 Queue<Integer> queue;
3 int capacity;
4 int sum;
5
6 /** Initialize your data structure here. */
7 public MovingAverage(int size) {
8 queue = new LinkedList<Integer>();
9 capacity = size;
10 sum = 0;
11 }
12
13 public double next(int val) {
14 if (queue.size() == capacity) {
15 sum -= queue.poll();
16 }
17 sum += val;
18 queue.offer(val);
19 return (double)sum/queue.size();
20 }
21 }
22
23 /**
24 * Your MovingAverage object will be instantiated and called as such:
25 * MovingAverage obj = new MovingAverage(size);
26 * double param_1 = obj.next(val);
27 */
Array method: 매우 똑똑
1 public class MovingAverage {
2 private int [] window;
3 private int n, insert;
4 private long sum;
5
6 /** Initialize your data structure here. */
7 public MovingAverage(int size) {
8 window = new int[size];
9 insert = 0;
10 sum = 0;
11 }
12
13 public double next(int val) {
14 if (n < window.length) n++;
15 sum -= window[insert];
16 sum += val;
17 window[insert] = val;
18 insert = (insert + 1) % window.length;
19
20 return (double)sum / n;
21 }
22 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.