C++ | Leetcode C++题解之第295题数据流的中位数

题目:

题解:

cpp 复制代码
class MedianFinder {
    multiset<int> nums;
    multiset<int>::iterator left, right;

public:
    MedianFinder() : left(nums.end()), right(nums.end()) {}

    void addNum(int num) {
        const size_t n = nums.size();

        nums.insert(num);
        if (!n) {
            left = right = nums.begin();
        } else if (n & 1) {
            if (num < *left) {
                left--;
            } else {
                right++;
            }
        } else {
            if (num > *left && num < *right) {
                left++;
                right--;
            } else if (num >= *right) {
                left++;
            } else {
                right--;
                left = right;
            }
        }
    }

    double findMedian() {
        return (*left + *right) / 2.0;
    }
};
相关推荐
近津薪荼1 小时前
c++详解(宏与内联函数,nullptr)
开发语言·c++
淮北4942 小时前
STL学习(十一、常用的算数算法和集合算法)
c++·vscode·学习·算法
AA陈超4 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 #06-11:游戏后效果执行
c++·游戏·ue5·游戏引擎·虚幻
小学生的信奥之路8 小时前
力扣1116题:用C++实现多线程交替输出零、偶数、奇数
c++·leetcode·多线程
老狼主8 小时前
MFC CChartCtrl编程
c++·mfc
新青年.9 小时前
cpp实现音频重采样8k->16k及16k->8k
c++
金山几座10 小时前
C++面试5题--6day
c++·面试
筏.k10 小时前
知识随记-----使用现代C++客户端库redis-plus-plus实现redis池缓解高并发
c++·经验分享·redis·microsoft
NFA晨曦10 小时前
力扣刷题日常(7-8)
算法·leetcode·c#
小指纹11 小时前
图论-最短路 Bellman-Ford算法
c++·算法·objective-c·图论