295. Find Median from Data Stream 发表于 2022-05-01 1234567891011121314151617181920212223242526272829303132333435class MedianFinder { private final Queue<Integer> minHeap; private final Queue<Integer> maxHeap; public MedianFinder() { // -------- // \ / // \ / // / \ // / \ // -------- this.minHeap = new PriorityQueue<>(); // 最小堆,倒置,同时承载奇数时多的那一个元素 this.maxHeap = new PriorityQueue<>((o1, o2) -> o2 - o1); // 最大堆 } public void addNum(int num) { if (minHeap.size() == maxHeap.size()) { maxHeap.offer(num); minHeap.offer(maxHeap.poll()); } else { minHeap.offer(num); maxHeap.offer(minHeap.poll()); } } public double findMedian() { if (minHeap.size() == maxHeap.size()) { return (minHeap.peek() + maxHeap.peek()) / 2.0; } else { return minHeap.peek(); } }} Reference295. Find Median from Data Stream剑指 Offer 41. 数据流中的中位数面试题 17.20. 连续中值