Skip to content

Commit 6fd98aa

Browse files
authored
Update Solution.ts
1 parent f11ec5b commit 6fd98aa

File tree

1 file changed

+11
-21
lines changed
  • solution/0200-0299/0295.Find Median from Data Stream

1 file changed

+11
-21
lines changed

solution/0200-0299/0295.Find Median from Data Stream/Solution.ts

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,22 @@
11
class MedianFinder {
2-
private nums: number[];
3-
4-
constructor() {
5-
this.nums = [];
6-
}
2+
#minQ = new MinPriorityQueue();
3+
#maxQ = new MaxPriorityQueue();
74

85
addNum(num: number): void {
9-
const { nums } = this;
10-
let l = 0;
11-
let r = nums.length;
12-
while (l < r) {
13-
const mid = (l + r) >>> 1;
14-
if (nums[mid] < num) {
15-
l = mid + 1;
16-
} else {
17-
r = mid;
18-
}
6+
const [minQ, maxQ] = [this.#minQ, this.#maxQ];
7+
maxQ.enqueue(num);
8+
minQ.enqueue(maxQ.dequeue().element);
9+
if (minQ.size() - maxQ.size() > 1) {
10+
maxQ.enqueue(minQ.dequeue().element);
1911
}
20-
nums.splice(l, 0, num);
2112
}
2213

2314
findMedian(): number {
24-
const { nums } = this;
25-
const n = nums.length;
26-
if ((n & 1) === 1) {
27-
return nums[n >> 1];
15+
const [minQ, maxQ] = [this.#minQ, this.#maxQ];
16+
if (minQ.size() === maxQ.size()) {
17+
return (minQ.front().element + maxQ.front().element) / 2;
2818
}
29-
return (nums[n >> 1] + nums[(n >> 1) - 1]) / 2;
19+
return minQ.front().element;
3020
}
3121
}
3222

0 commit comments

Comments
 (0)