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;
    }
};
相关推荐
会编程的土豆20 分钟前
【复习】二分查找
数据结构·c++·算法
yuanpan1 小时前
Python 调用 DLL 动态库入门:Windows 下调用 C++ 与 C# 动态库完整示例
c++·windows·python
handler012 小时前
Linux: 基本指令知识点(3)
linux·服务器·c语言·开发语言·c++·笔记
wuminyu2 小时前
专家视角看Java线程生命周期与上下文切换的本质
java·linux·c语言·jvm·c++
云深麋鹿2 小时前
C++ | 容器list
开发语言·c++·容器·list
穿条秋裤到处跑2 小时前
每日一道leetcode(2026.04.19):下标对中的最大距离
算法·leetcode·职场和发展
handler012 小时前
Linux 基本指令知识点(1)
linux·c++·笔记
hansel_sky2 小时前
题解-数字删除
c++·程序人生
Hical_W2 小时前
C++ 也能优雅写 Web?5 分钟用 Hical 搭建 REST API
开发语言·c++·github
历程里程碑2 小时前
55 Linux epoll高效IO实战指南
java·linux·服务器·开发语言·前端·javascript·c++