Skip to content

Commit 9905453

Browse files
feat: top-k-frequent-elements solution
1 parent 9bbc17b commit 9905453

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* ์ •์ˆ˜ array nums , ์ •์ˆ˜ k๊ฐ€ ์žˆ์„๋•Œ, ๊ฐ€์žฅ ๋นˆ๋„๊ฐ€ ๋†’์€ ์ˆซ์ž k๊ฐœ ๋ฆฌํ„ด. ์ˆœ์„œ์ƒ๊ด€ X
3+
*/
4+
5+
/**
6+
* @param {number[]} nums
7+
* @param {number} k
8+
* @return {number[]}
9+
*/
10+
11+
//nums์— ๋Œ€ํ•ด์„œ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ค‘๋ณต๋˜๋Š” ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ k๊ฐœ ๋ฆฌํ„ดํ•œ๋‹ค.
12+
13+
var topKFrequent = function (nums, k) {
14+
const numsFreqMap = new Map(); // O(1)
15+
16+
// O(n) ์‹œ๊ฐ„ / O(n) ๊ณต๊ฐ„
17+
for (let i = 0; i < nums.length; i++) {
18+
const count = (numsFreqMap.get(nums[i]) ?? 0) + 1; // O(1)
19+
numsFreqMap.set(nums[i], count); // O(1)
20+
}
21+
22+
const arrFromFreqMap = [...numsFreqMap]; // O(n) ์‹œ๊ฐ„ / O(n) ๊ณต๊ฐ„
23+
arrFromFreqMap.sort((a, b) => b[1] - a[1]); // O(n log n) ์‹œ๊ฐ„
24+
25+
return arrFromFreqMap
26+
.map((x) => x[0]) // O(n) ์‹œ๊ฐ„ / O(n) ๊ณต๊ฐ„
27+
.slice(0, k); // O(k) ์‹œ๊ฐ„ / O(k) ๊ณต๊ฐ„
28+
};
29+
30+
//O(n) + O(n log n) + O(n) + O(k) = O(n log n)

0 commit comments

Comments
ย (0)