Skip to content

Commit 7f9eeaf

Browse files
rain84yanglbme
authored andcommitted
feat: add 2nd ts solution to lc problem: No.0295
1 parent 43a0d90 commit 7f9eeaf

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

solution/0200-0299/0295.Find Median from Data Stream/README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,4 +422,42 @@ public class MedianFinder {
422422

423423
<!-- solution:end -->
424424

425+
<!-- solution:start -->
426+
427+
### Solution 2. Min/max heaps
428+
429+
<!-- tabs:start -->
430+
431+
#### TypeScript
432+
433+
```ts
434+
class MedianFinder {
435+
#minQ = new MinPriorityQueue<number>();
436+
#maxQ = new MaxPriorityQueue<number>();
437+
438+
addNum(num: number): void {
439+
const [minQ, maxQ] = [this.#minQ, this.#maxQ];
440+
maxQ.enqueue(num);
441+
minQ.enqueue(maxQ.dequeue().element);
442+
if (minQ.size() > maxQ.size()) {
443+
maxQ.enqueue(minQ.dequeue().element);
444+
}
445+
}
446+
447+
findMedian(): number {
448+
const [minQ, maxQ] = [this.#minQ, this.#maxQ];
449+
const median =
450+
maxQ.size() === minQ.size()
451+
? (maxQ.front().element + minQ.front().element) / 2
452+
: maxQ.front().element;
453+
454+
return median;
455+
}
456+
}
457+
```
458+
459+
<!-- tabs:end -->
460+
461+
<!-- solution:end -->
462+
425463
<!-- problem:end -->

solution/0200-0299/0295.Find Median from Data Stream/README_EN.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,4 +417,42 @@ public class MedianFinder {
417417

418418
<!-- solution:end -->
419419

420+
<!-- solution:start -->
421+
422+
### Solution 2. Min/max heaps
423+
424+
<!-- tabs:start -->
425+
426+
#### TypeScript
427+
428+
```ts
429+
class MedianFinder {
430+
#minQ = new MinPriorityQueue<number>();
431+
#maxQ = new MaxPriorityQueue<number>();
432+
433+
addNum(num: number): void {
434+
const [minQ, maxQ] = [this.#minQ, this.#maxQ];
435+
maxQ.enqueue(num);
436+
minQ.enqueue(maxQ.dequeue().element);
437+
if (minQ.size() > maxQ.size()) {
438+
maxQ.enqueue(minQ.dequeue().element);
439+
}
440+
}
441+
442+
findMedian(): number {
443+
const [minQ, maxQ] = [this.#minQ, this.#maxQ];
444+
const median =
445+
maxQ.size() === minQ.size()
446+
? (maxQ.front().element + minQ.front().element) / 2
447+
: maxQ.front().element;
448+
449+
return median;
450+
}
451+
}
452+
```
453+
454+
<!-- tabs:end -->
455+
456+
<!-- solution:end -->
457+
420458
<!-- problem:end -->
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class MedianFinder {
2+
#minQ = new MinPriorityQueue<number>();
3+
#maxQ = new MaxPriorityQueue<number>();
4+
5+
addNum(num: number): void {
6+
const [minQ, maxQ] = [this.#minQ, this.#maxQ];
7+
maxQ.enqueue(num);
8+
minQ.enqueue(maxQ.dequeue().element);
9+
if (minQ.size() > maxQ.size()) {
10+
maxQ.enqueue(minQ.dequeue().element);
11+
}
12+
}
13+
14+
findMedian(): number {
15+
const [minQ, maxQ] = [this.#minQ, this.#maxQ];
16+
const median =
17+
maxQ.size() === minQ.size()
18+
? (maxQ.front().element + minQ.front().element) / 2
19+
: maxQ.front().element;
20+
21+
return median;
22+
}
23+
}

0 commit comments

Comments
 (0)