Skip to content

Commit 969f0a8

Browse files
committed
#237 top-k-frequent-elements solution
1 parent 4d32152 commit 969f0a8

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
풀이 :
3+
해시테이블에 숫자 : 빈도로 저장 후 freq 이중배열에 index를 frequency로 삼아 저장한다
4+
이중배열의 뒤에서부터 탐색하면서 k개를 result에 삽입
5+
6+
nums 개수 N
7+
TC : O(N)
8+
전체 개수 N에 대해 for문 각각 돌아서
9+
SC : O(N)
10+
해시테이블과 이중배열 모두 N에 비례
11+
*/
12+
13+
#include <vector>
14+
#include <unordered_map>
15+
using namespace std;
16+
17+
class Solution {
18+
public:
19+
vector<int> topKFrequent(vector<int>& nums, int k) {
20+
unordered_map<int, int> umap;
21+
for (auto& num : nums)
22+
{
23+
umap[num]++;
24+
}
25+
26+
vector<vector<int>> freq(nums.size() + 1);
27+
for (auto& pair : umap)
28+
{
29+
freq[pair.second].push_back(pair.first);
30+
}
31+
32+
vector<int> result;
33+
for (int i = nums.size(); i > 0 && result.size() < k; i--)
34+
{
35+
for (auto& num : freq[i])
36+
{
37+
result.push_back(num);
38+
if (result.size() == k)
39+
break ;
40+
}
41+
}
42+
return result;
43+
}
44+
};

0 commit comments

Comments
 (0)