Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cf51b3c

Browse files
solves #346: Moving Average from data stream in java
1 parent f5726c1 commit cf51b3c

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

‎README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@
293293
| 343 | [Integer Break](https://leetcode.com/problems/integer-break) | | |
294294
| 344 | [Reverse A String](https://leetcode.com/problems/reverse-string) | [![Java](assets/java.png)](src/ReverseString.java) [![Python](assets/python.png)](python/reverse_a_string.py) | |
295295
| 345 | [Reverse Vowels of A String](https://leetcode.com/problems/reverse-vowels-of-a-string) | [![Java](assets/java.png)](src/ReverseVowelsOfString.java) [![Python](assets/python.png)](python/reverse_vowels_of_a_string.py) | |
296-
| 346 | 🔒 [Moving Average From Data Stream](https://leetcode.com/problems/moving-average-from-data-stream) | | |
296+
| 346 | 🔒 [Moving Average From Data Stream](https://leetcode.com/problems/moving-average-from-data-stream) | [![Java](assets/java.png)](src/MovingAverageFromDataStream.java) | |
297297
| 347 | [Top K frequent Elements](https://leetcode.com/problems/top-k-frequent-elements) | | |
298298
| 348 | 🔒 [Design Tic-Tac-Toe](https://leetcode.com/problems/design-tic-tac-toe) | | |
299299
| 349 | [Intersection of 2 Arrays](https://leetcode.com/problems/intersection-of-two-arrays) | [![Java](assets/java.png)](src/IntersectionOfTwoArrays.java) [![Python](assets/python.png)](python/intersection_of_2_array.py) | |

‎src/MovingAverageFromDataStream.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// https://leetcode.com/problems/moving-average-from-data-stream
2+
// N: number of calls to next(), M: max window size
3+
// T: O(N)
4+
// S: O(M)
5+
6+
import java.util.LinkedList;
7+
import java.util.Queue;
8+
9+
public class MovingAverageFromDataStream {
10+
}
11+
12+
13+
class MovingAverage {
14+
final int windowSize;
15+
final Queue<Integer> queue = new LinkedList<>();
16+
double windowSum = 0;
17+
18+
// T: O(1)
19+
public MovingAverage(int size) {
20+
windowSize = size;
21+
}
22+
23+
// T: O(1)
24+
// S: O(1)
25+
public double next(int val) {
26+
queue.add(val);
27+
final int toRemove = (queue.size() > windowSize && !queue.isEmpty()) ? queue.poll() : 0;
28+
windowSum += val - toRemove;
29+
return windowSum / queue.size();
30+
}
31+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /