Find Median from Data Stream LeetCode solution in JavaScript

1
var MedianFinder = function () {
2
this.left = new MaxPriorityQueue();
3
this.right = new MinPriorityQueue();
4
};
5

6
/**
7
* @param {number} num
8
* @return {void}
9
*/
10
MedianFinder.prototype.addNum = function (num) {
11
let { right, left } = this;
12
if (right.size() > 0 && num > right.front().element) {
13
right.enqueue(num);
14
} else {
15
left.enqueue(num);
16
}
17

18
if (Math.abs(left.size() - right.size()) == 2) {
19
if (left.size() > right.size()) {
20
right.enqueue(left.dequeue().element);
21
} else {
22
left.enqueue(right.dequeue().element);
23
}
24
}
25
};
26

27
/**
28
* @return {number}
29
*/
30
MedianFinder.prototype.findMedian = function () {
31
let { left, right } = this;
32
if (left.size() > right.size()) {
33
return left.front().element;
34
} else if (right.size() > left.size()) {
35
return right.front().element;
36
} else {
37
// get the sum of all
38
return (left.front().element + right.front().element) / 2;
39
}
40
};
41

42
/**
43
* Your MedianFinder object will be instantiated and called as such:
44
* var obj = new MedianFinder()
45
* obj.addNum(num)
46
* var param_2 = obj.findMedian()
47
*/

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0