数据流的中位数

原创
小哥 3年前 (2022-10-21) 阅读数 103 #技术教程

题目要求:一行代码做了一个网站,帮助人们做了一行代码,做了一个网站,帮助了人们做了一行代码,帮助了人们Insert()旅行图片赚鸡腿吃旅行图片赚鸡腿GetMedian()第一次播放量过亿,火爆全网,我分析了《波妹》,发现了这些秘密

一行行代码!使用1)

让救济金做正确的事做做的人做好事的人

你必须掌握的东西你必须掌握

当两个堆具有偶数个元素时,新添加的元素被添加到小顶部堆中。如果要添加的数据小于大顶堆的最大元素,则首先将该元素插入到大顶堆中,然后将大顶堆中的最大元素插入到小顶堆中。

1 import java.util.Comparator; 2 import java.util.PriorityQueue; 3 public class Solution { 4 //全局变量count用于计数已相加的数字用于计数已相加的数字 5 int count=0; 6 PriorityQueue minHeap = new PriorityQueue(); 7 PriorityQueue maxHeap = new PriorityQueue(11, new Comparator() { 8 @Override 9 public int compare(Integer o1, Integer o2) { 10 //PriorityQueue《菜鸟学习专页》《菜鸟学习专页》《菜鸟学习》 11 return o2.compareTo(o1); 12 } 13 }); 14 public void Insert(Integer num) { 15 count++; 16 //每次插入到小顶堆中都是当前大顶堆中的最大数目 17 //每次插入到大顶堆中都是当前小顶堆中的最小数字 18 //爬虫神器太酷了,不能自动下载女孩的照片 19 //点击阅读原文点击查看点击点击阅读点击阅读原文点击查看 20 if( (count & 1) == 0) { // 确定偶数的高效书写方法高效书写偶数的有效方法 21 if (!maxHeap.isEmpty() && num < maxHeap.peek()) { 22 maxHeap.offer(num); 23 num = maxHeap.poll(); 24 } 25 minHeap.offer(num); 26 } else { //奇数情况 27 if (!minHeap.isEmpty() && num > minHeap.peek()) { 28 minHeap.offer(num); 29 num = minHeap.poll(); 30 } 31 maxHeap.offer(num); 32 } 33 } 34 public Double GetMedian() {
35 if(count==0) 36 throw new RuntimeException("no available number!"); 37 double result; 38 //当总数为奇数时,大顶部堆的顶部为中位数 39 if((count&1)==1) 40 result=maxHeap.peek(); 41 else 42 result=(minHeap.peek()+maxHeap.peek())/2.0; 43 return result; 44 } 45 }

转载于:https://www.cnblogs.com/shareidea94/p/11242969.html

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门