init
This commit is contained in:
parent
ebc6b9be1d
commit
2ec45fe5b8
35
algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/datastreammedian/DataStreamMedian.java
Normal file
35
algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/datastreammedian/DataStreamMedian.java
Normal file
@ -0,0 +1,35 @@
|
||||
package com.baeldung.algorithms.datastreammedian;
|
||||
|
||||
import java.util.PriorityQueue;
|
||||
import java.util.Queue;
|
||||
|
||||
import static java.util.Comparator.reverseOrder;
|
||||
|
||||
public class DataStreamMedian {
|
||||
|
||||
private Queue<Integer> minHeap, maxHeap;
|
||||
|
||||
DataStreamMedian() {
|
||||
minHeap = new PriorityQueue<>();
|
||||
maxHeap = new PriorityQueue<>(reverseOrder());
|
||||
}
|
||||
|
||||
void add(int num) {
|
||||
minHeap.offer(num);
|
||||
maxHeap.offer(minHeap.poll());
|
||||
|
||||
if (minHeap.size() < maxHeap.size()) {
|
||||
minHeap.offer(maxHeap.poll());
|
||||
}
|
||||
}
|
||||
|
||||
double getMedian() {
|
||||
int median;
|
||||
if (minHeap.size() > maxHeap.size()) {
|
||||
median = minHeap.peek();
|
||||
} else {
|
||||
median = (minHeap.peek() + maxHeap.peek()) / 2;
|
||||
}
|
||||
return median;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user