File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change 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+ };
You can’t perform that action at this time.
0 commit comments