强势介入难逃总裁魔掌,广州婴儿汤,pp助手龙将
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值
使用两个heap的方法进行处理
java
import java.util.Collections; import java.util.PriorityQueue; import java.util.Queue; public class Solution { Queue minHeap = new PriorityQueue<>(); Queue maxHeap = new PriorityQueue<>(Collections.reverseOrder()); public void Insert(Integer num) { maxHeap.offer(num); minHeap.offer(maxHeap.paoll()); if (maxHeap.size() < minHeap.size()) { maxHeap.offer(minHeap.poll()); } } public Double GetMedian() { double val = maxHeap.peek(); if (maxHeap.size() == minHeap.size()) { val = (maxHeap.peek() + minHeap.peek()) * 0.5; } return val; } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
网友评论