81. Find Median from Data Stream

Code(Language:C++) (Judger:cloudjudge-cluster-5)
class Solution {
private: 
    priority_queue<int> small, large; 
public:
    /**
     * @param nums: A list of integers
     * @return: the median of numbers
     */
     //small和large,分别存小的一半和大的一半。小的一半的个数等于大的一半个数+1或大的一半个数。
    void addNum(int num){
        small.push(num);
        large.push(-small.top());
        small.pop();
        if(small.size() < large.size()){
            small.push(-large.top());
            large.pop(); 
        }
        return; 
    } 
    int findMedian(){
        if(small.size() > large.size()){
            return small.top(); 
        }
        else{
            //return (small.top() - large.top())/2; 
            return small.top();
        }
    }
    vector<int> medianII(vector<int> &nums) {
        // write your code here
        vector<int> res; 
        for(int i = 0; i < nums.size(); i++){
            addNum(nums[i]);
            res.push_back(findMedian()); 
        }
        return res; 
    }
};

Comments

Popular posts from this blog

算法的比较