Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.29 KB | None | 0 0
  1. private static class P50Calculator {
  2.         final PriorityQueue<Integer> minHeap;
  3.         final PriorityQueue<Integer> maxHeap;
  4.         public P50Calculator(){
  5.             minHeap = new PriorityQueue<>(new Comparator<Integer>() {
  6.                 @Override
  7.                 public int compare(Integer num1, Integer num2) {
  8.                     return num2 - num1;
  9.                 }
  10.             });
  11.             maxHeap = new PriorityQueue<>();
  12.         }
  13.        
  14.         public void addValue(int value) {
  15.             if(minHeap.isEmpty() || value<minHeap.peek()){
  16.                 minHeap.offer(value);
  17.             } else {
  18.                 maxHeap.offer(value);
  19.             }
  20.             final PriorityQueue<Integer> heap1 = minHeap.size()>=maxHeap.size() ? minHeap : maxHeap;
  21.             final PriorityQueue<Integer> heap2 = minHeap.size()<=maxHeap.size() ? minHeap : maxHeap;
  22.             if((heap1.size()-heap2.size())>1){
  23.                 heap2.offer(heap1.poll());
  24.             }
  25.         }        
  26.        
  27.         public double getP50(){
  28.             if(minHeap.size()==maxHeap.size()){
  29.                 return minHeap.size()==0 ? 0 : (minHeap.peek() + maxHeap.peek())/2.0;
  30.             }
  31.             return minHeap.size() > maxHeap.size() ? minHeap.peek() : maxHeap.peek();
  32.         }
  33.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement