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