Skip to content

Commit b5adf9a

Browse files
committed
top k frequent elements solution
1 parent 73b1341 commit b5adf9a

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number[]}
5+
*/
6+
var topKFrequent = function(nums, k) {
7+
let map = new Map(); // key์—๋Š” ํ•ด๋‹น๋˜๋Š” ์ˆซ์ž, value์—๋Š” ํ•ด๋‹น๋˜๋Š” ์ˆซ์ž์˜ ๊ฐฏ์ˆ˜
8+
9+
// ์ˆซ์ž๋ณ„ ๋นˆ๋„์ˆ˜
10+
nums.forEach((num) => {
11+
map.set(num, (map.get(num) || 0) + 1);
12+
});
13+
14+
// ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
15+
let sortedResult = Array.from(map.entries()).sort((a,b) => b[1] - a[1]);
16+
//console.log(sortedResult);
17+
//console.log(sortedResult.slice(0,k));
18+
19+
// k๊ฐฏ์ˆ˜์˜ ์ˆซ์ž ๋ฐ˜ํ™˜
20+
return sortedResult.slice(0,k).map(item => item[0]);
21+
};
22+
23+
// ์—ฌ๊ธฐ์„œ ์œ„ ์ฝ”๋“œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„์™€ ๊ณต๊ฐ„๋ณต์žก๋„๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž...
24+
// ์‹œ๊ฐ„๋ณต์žก๋„ => O(m log m) ** ๋” ๊ฐœ์„ ํ•  ๋ฐฉ๋ฒ• ์ฐพ์•„๋ณด๊ธฐ
25+
// forEach ํ†ตํ•œ ๋ฐฐ์—ด ์ˆœํšŒ: ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ n์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด O(n)
26+
// sortedResult (์ •๋ ฌ): O(m log m)
27+
// k๊ฐฏ์ˆ˜์˜ ์ˆซ์ž ๋ฐ˜ํ™˜: k๊ฐœ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์—ฐ์‚ฐํ•˜๋‹ˆ๊นŒ O(k)
28+
29+
// ๊ณต๊ฐ„๋ณต์žก๋„ => O(n)
30+
// map์˜ ํฌ๊ธฐ: ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ n์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด O(n)
31+
// sortedResult: O(m)
32+
// k๊ฐœ ์ˆซ์ž ์ €์žฅ: O(k)

0 commit comments

Comments
ย (0)