81. Find Median from Data Stream
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
Post a Comment