当前位置: 首页 > news >正文

【leetcode hot 100 295】数据流的中位数

解法一:申请两个堆。一个堆存放比中位数小的数,是大根堆;一个堆存放比中位数大的数,是小根堆。

class MedianFinder {
    PriorityQueue<Integer> queMin; // 存放比中位数小的数->大根堆
    PriorityQueue<Integer> queMax; // 存放比中位数大的数->小根堆

    public MedianFinder() {
        queMin = new PriorityQueue<Integer>((a, b) -> (b - a));
        queMax = new PriorityQueue<Integer>((a, b) -> (a - b));
    }

    public void addNum(int num) {
        if (queMin.isEmpty() || num <= queMin.peek()) {  // 要=,要保证都是先加queMin
            queMin.offer(num);
            if (queMin.size() > queMax.size()+1) {  // +1 要在Max上
                queMax.offer(queMin.poll());
            }
        } else {
            queMax.offer(num);
            if (queMax.size() > queMin.size()) {  // 没有+1了,要保证都是先加queMin
                queMin.offer(queMax.poll());
            }
        }
    }

    public double findMedian() {
        if (queMin.size() > queMax.size()) {
            return queMin.peek(); // 因为都是先加queMin
        }
        return (queMin.peek() + queMax.peek()) / 2.0; // 注意除2.0 才能返回小数点
    }
}

/**
 * Your MedianFinder object will be instantiated and called as such:
 * MedianFinder obj = new MedianFinder();
 * obj.addNum(num);
 * double param_2 = obj.findMedian();
 */

注意:

  • 在加入元素过程中,要持续保持先加queMin:num <= queMin.peek() 有等号;queMin.size() > queMax.size()+1 +1 要在Max上;queMax.size() > queMin.size() 没有+1了。
  • 因此为奇数时(大小根堆数目不同),先返回queMin的。
  • return (queMin.peek() + queMax.peek()) / 2.0 这里要除2.0 才能返回小数点

相关文章:

  • 基于大模型的肋骨骨折合并血气胸预测及诊疗方案研究
  • hadoop相关面试题以及答案
  • 中医气血精津辨证
  • Linux应用:线程进阶
  • hackmyvm-reversteg
  • Modbus TCP返回报文
  • 简单介绍一下Unity中的ScriptableObject
  • Skynet 框架中 gateserver、gate、watchdog 的关系
  • browser-use 库网页元素点击测试工具
  • 多路转接epoll
  • 基于杜鹃鸟鲶鱼优化(Cuckoo Catfish Optimizer,CCO)算法的多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码
  • 输入百分比校验(数字非负数保留2位不四舍五入)
  • ABAQUS圆柱体纤维重力堆积3D模型
  • 关于bug总结记录
  • 软件测试之fiddler详解
  • 计算机二级(C语言)考试高频考点总汇(二)—— 控制流、函数、数组和指针
  • 破解AI焦虑,YonSuite给出了一份企业AI落地路线图
  • 学习日记0327
  • 基于FPGA的ESP8266无线数据传输(温湿度DTH11、光照强度BH1750、WIFI模块)连接中国移动onenet云平台,仿真+上板
  • 数据大屏点亮工业互联网的智慧之眼
  • 腾讯的网站是谁做的/上海网络推广专员
  • 做类似淘宝一样的网站/游戏优化大师官方下载
  • 文安做网站shijuewang/百度网盘电话人工服务
  • php禁止ip访问网站/免费站长统计工具
  • 点个赞科技 网站制作/营销手段和营销方式
  • wordpress+商会+模版/青岛seo外包服务