LeetCode295

    技术2022-07-31  91

    class MedianFinder { PriorityQueue<Integer> maxHeap; PriorityQueue<Integer> minHeap; /** initialize your data structure here. */ public MedianFinder() { maxHeap = new PriorityQueue<>((a,b) -> b - a); minHeap = new PriorityQueue<>((a,b) -> a - b); } public void addNum(int num) { if(maxHeap.size() == 0|| num <= maxHeap.peek()){ maxHeap.offer(num); }else{ minHeap.offer(num); } //exchange element because maxHeap must be larger than minHeap. if (maxHeap.size() > minHeap.size() + 1){ minHeap.add(maxHeap.poll()); }else if (maxHeap.size() < minHeap.size()){ maxHeap.add(minHeap.poll()); } } public double findMedian() { if(maxHeap.size() != minHeap.size()){ return maxHeap.peek(); }else{ return maxHeap.peek() / 2.0 + minHeap.peek() / 2.0; } } } /** * Your MedianFinder object will be instantiated and called as such: * MedianFinder obj = new MedianFinder(); * obj.addNum(num); * double param_2 = obj.findMedian(); */

     

    Processed: 0.009, SQL: 10