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先进先出的特点即可。
1 public class MovingAverage { 2 Queue<Integer> q; 3 double sum = 0; 4 int size; 5 6 /** Initialize your data structure here. */ 7 public MovingAverage(int s) { 8 q = new LinkedList(); 9 size = s; 10 } 11 12 public double next(int val) { 13 if (q.size() == size) { 14 sum = sum - q.poll(); 15 } 16 q.offer(val); 17 sum += val; 18 return sum / q.size(); 19 } 20 }
时间: 2024-10-13 11:47:58