#346
Easy Algorithms Moving average from data stream
Array Design Queue Data Stream
80.2% acceptance
Mar 31, 2026
1753
193
No description available.
Solution
Rust
Time O(n)
Space O(n)
use std::collections::VecDeque;
struct MovingAverage {
size: usize,
queue: VecDeque<i32>,
sum: f64,
}
impl MovingAverage {
fn new(size: i32) -> Self {
MovingAverage {
size: size as usize,
queue: VecDeque::new(),
sum: 0.0,
}
}
fn next(&mut self, val: i32) -> f64 {
if self.queue.len() == self.size {
if let Some(old) = self.queue.pop_front() {
self.sum -= old as f64;
}
}
self.queue.push_back(val);
self.sum += val as f64;
self.sum / self.queue.len() as f64
}
}