數據流中的中位數(C++牛客網)

解題思路:

(1)因爲需要求中位數,所以需要排序

(2)考慮到set是邊插入變排序,但是元素可能會重合

(3)使用multiset,最後根據集合的大小,使用迭代器獲得中位數

class Solution {
public:
    multiset<int> s;
    void Insert(int num) {
        s.insert(num);
    }

    double GetMedian() { 
        int a = s.size()/2;
        if(s.size()%2==1) return *next(s.begin(),a);
        else return ((double)*next(s.begin(),a)+(double)*next(s.begin(),a-1))/2;
    }

};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章