Skip to content

Commit a87dd08

Browse files
committed
solve: top k frequent elements
1 parent c4397be commit a87dd08

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

top-k-frequent-elements/tolluset.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
type Nums = [number, number][];
2+
3+
/*
4+
* TC: O(nlogn)
5+
* SC: O(n)
6+
* */
7+
function topKFrequent(nums: number[], k: number): number[] {
8+
const counting = (arr: number[]) =>
9+
arr.reduce((acc, n) => {
10+
const val = acc.get(n) ?? 0;
11+
acc.set(n, val + 1);
12+
return acc;
13+
}, new Map<number, number>());
14+
15+
const toValues = (map: Map<number, number>) => Array.from(map.entries());
16+
17+
const sorting = (arr: Nums) => arr.sort((a, b) => b[1] - a[1]);
18+
19+
const getK = (arr: Nums, k: number) => arr.slice(0, k).map((v) => v[0]);
20+
21+
return pipe(counting, toValues, sorting, (arr: Nums) => getK(arr, k))(nums);
22+
}
23+
24+
const pipe =
25+
(...fns: Function[]) =>
26+
(x: any) =>
27+
fns.reduce((v, f) => f(v), x);

0 commit comments

Comments
 (0)