• 剑指offer--47.数据流中的中位数


    时间限制:1秒 空间限制:32768K 热度指数:122511

     算法知识视频讲解

    题目描述

    如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
    ------------------------------------------------------------------------------
    class Solution {
        public:
            void Insert(int num) {
                arr.push_back(num);
            }
    
            double GetMedian() {
                sort(arr.begin(), arr.end());
                int len = arr.size();
                if(len == 0) return 0;
                if(len == 1) return arr[0];
                if(len == 2) return (arr[0] + arr[1])*1.0/2;
                if(len & 1) {
                    return arr[len/2]*1.0;
                } else {
                    return (arr[len/2] + arr[len/2-1])*1.0 /2;
                }
            }
        private:
            vector<int> arr;
    };
  • 相关阅读:
    Deployment descriptor
    实体、list 、xml之间的转化
    关于C# 汉字转拼音问题
    NPoco学习笔记(1)
    SQL(二)
    SQL(一)
    sobel算子及cvSobel
    图像的平滑处理
    erase的用法
    int main(int argc, char* argv[ ])
  • 原文地址:https://www.cnblogs.com/slothrbk/p/10631294.html
Copyright © 2020-2023  润新知