lifeiteng

295. Find Median from Data Stream

Sep 25th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.74 KB | None | 0 0
  1. class MedianFinder {
  2.  
  3.     /** initialize your data structure here. */
  4.     List<Integer> list = new ArrayList<>();
  5.     public MedianFinder() {
  6.        
  7.     }
  8.    
  9.     public void addNum(int num) {
  10.         int pos = Collections.binarySearch(list, num);
  11.         if(pos < 0) pos = -pos - 1;
  12.         list.add(pos, num);
  13.     }
  14.    
  15.     public double findMedian() {
  16.         int size = list.size(), m = (size - 1) / 2, a = list.get(m), b = m + 1 < size ? list.get(m + 1) : 0;
  17.         if(size % 2 != 0) return (double) a;
  18.         return 0.5 * (a + b);
  19.     }
  20. }
  21.  
  22. /**
  23.  * Your MedianFinder object will be instantiated and called as such:
  24.  * MedianFinder obj = new MedianFinder();
  25.  * obj.addNum(num);
  26.  * double param_2 = obj.findMedian();
  27.  */
Add Comment
Please, Sign In to add comment