数据流中的中位数处理
程序员文章站
2022-03-15 11:16:47
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值
使用...
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值
使用两个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; } }
上一篇: 我的“脸”我做主!互联网时代,如何守护“脸安全”?
下一篇: spark流式读取hdfs中数据讲解