Skip to content

Commit 6af5529

Browse files
committed
One-Hundred-Nineteen Commit: Add Find the Median of a Number Stream problem to Heap section
1 parent 1c2ec03 commit 6af5529

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package Heap;
2+
3+
// Problem Statement: Find the Median of a Number Stream (medium)
4+
// LeetCode Question: 295. Find Median from Data Stream
5+
6+
import java.util.PriorityQueue;
7+
8+
public class Problem_1_Median_Of_A_Number_Stream {
9+
10+
PriorityQueue<Integer> maxHeap;
11+
PriorityQueue<Integer> minHeap;
12+
13+
public Problem_1_Median_Of_A_Number_Stream() {
14+
maxHeap = new PriorityQueue<>((a, b) -> b - a);
15+
minHeap = new PriorityQueue<>((a, b) -> a - b);
16+
}
17+
18+
public void insertNum(int num){
19+
if (maxHeap.isEmpty() || maxHeap.peek() >= num) {
20+
maxHeap.add(num);
21+
} else {
22+
minHeap.add(num);
23+
}
24+
if (maxHeap.size() > minHeap.size() + 1) {
25+
minHeap.add(maxHeap.poll());
26+
} else if (maxHeap.size() < minHeap.size()) {
27+
maxHeap.add(minHeap.poll());
28+
}
29+
}
30+
31+
public double findMedian(){
32+
if (maxHeap.size() == minHeap.size()) {
33+
return maxHeap.peek() / 2.0 + minHeap.peek() / 2.0;
34+
}
35+
return maxHeap.peek();
36+
}
37+
38+
}

0 commit comments

Comments
 (0)