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;
    }
};
相关推荐
weixin_461769409 分钟前
15. 三数之和
c++·算法·leetcode·三数之和
千金裘换酒29 分钟前
LeetCode 链表两数相加
算法·leetcode·链表
小镇学者1 小时前
【c++】C++字符串删除末尾字符的三种实现方法
java·开发语言·c++
ue星空2 小时前
R3注入反截图
c++
独自破碎E2 小时前
二分查找-I
leetcode
塔尖尖儿2 小时前
For循环中++i与i++有什么不一样?
c++
Ralph_Y2 小时前
C++虚继承
开发语言·c++
千金裘换酒2 小时前
LeetCode 删除链表的倒数第N个结点
算法·leetcode
ZzZz_ing2 小时前
2026 - 零碎知识随记录
c++
SweetCode2 小时前
【无标题】
开发语言·c++·算法