Skip to content

Commit 977774c

Browse files
committed
feat: add ts solution to lc problem: No.0347
1 parent 0d3a2af commit 977774c

File tree

3 files changed

+90
-0
lines changed

3 files changed

+90
-0
lines changed

solution/0300-0399/0347.Top K Frequent Elements/README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,4 +282,39 @@ function topKFrequent(nums: number[], k: number): number[] {
282282

283283
<!-- solution:end -->
284284

285+
<!-- solution:start -->
286+
287+
### Solution 3. Priority queue
288+
289+
<!-- tabs:start -->
290+
291+
#### TypeScript
292+
293+
```ts
294+
function topKFrequent(nums: number[], k: number): number[] {
295+
const ans = Array<number>(k);
296+
const cnt = new Map<number, number>();
297+
const minPQ = new MinPriorityQueue();
298+
299+
for (const x of nums) {
300+
cnt.set(x, (cnt.get(x) ?? 0) + 1);
301+
}
302+
303+
for (const [x, c] of cnt) {
304+
minPQ.enqueue(x, c);
305+
if (minPQ.size() > k) minPQ.dequeue();
306+
}
307+
308+
while (k--) {
309+
ans[k] = minPQ.dequeue().element;
310+
}
311+
312+
return ans;
313+
}
314+
```
315+
316+
<!-- tabs:end -->
317+
318+
<!-- solution:end -->
319+
285320
<!-- problem:end -->

solution/0300-0399/0347.Top K Frequent Elements/README_EN.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,4 +270,39 @@ function topKFrequent(nums: number[], k: number): number[] {
270270

271271
<!-- solution:end -->
272272

273+
<!-- solution:start -->
274+
275+
### Solution 3. Priority queue
276+
277+
<!-- tabs:start -->
278+
279+
#### TypeScript
280+
281+
```ts
282+
function topKFrequent(nums: number[], k: number): number[] {
283+
const ans = Array<number>(k);
284+
const cnt = new Map<number, number>();
285+
const minPQ = new MinPriorityQueue();
286+
287+
for (const x of nums) {
288+
cnt.set(x, (cnt.get(x) ?? 0) + 1);
289+
}
290+
291+
for (const [x, c] of cnt) {
292+
minPQ.enqueue(x, c);
293+
if (minPQ.size() > k) minPQ.dequeue();
294+
}
295+
296+
while (k--) {
297+
ans[k] = minPQ.dequeue().element;
298+
}
299+
300+
return ans;
301+
}
302+
```
303+
304+
<!-- tabs:end -->
305+
306+
<!-- solution:end -->
307+
273308
<!-- problem:end -->
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
function topKFrequent(nums: number[], k: number): number[] {
2+
const ans = Array<number>(k);
3+
const cnt = new Map<number, number>();
4+
const minPQ = new MinPriorityQueue();
5+
6+
for (const x of nums) {
7+
cnt.set(x, (cnt.get(x) ?? 0) + 1);
8+
}
9+
10+
for (const [x, c] of cnt) {
11+
minPQ.enqueue(x, c);
12+
if (minPQ.size() > k) minPQ.dequeue();
13+
}
14+
15+
while (k--) {
16+
ans[k] = minPQ.dequeue().element;
17+
}
18+
19+
return ans;
20+
}

0 commit comments

Comments
 (0)