File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change 1+ import java .util .ArrayList ;
2+ import java .util .HashMap ;
3+ import java .util .List ;
4+ import java .util .Map ;
5+
6+ class Solution {
7+
8+
9+ // priority queue ๋ก ํ์ด๋ณด๊ธฐ
10+ public int [] topKFrequent (int [] nums , int k ) {
11+
12+ // ๋น๋์๋ฅผ ์
13+ Map <Integer , Integer > freqMap = new HashMap <>();
14+ for (int num : nums ) {
15+ freqMap .put (num , freqMap .getOrDefault (num , 0 ) + 1 );
16+ }
17+
18+ // ๊ฐฏ์๋งํผ ๋ฐฐ์ด ์์ฑ (๋น๋์๋ฅผ ์ธ๋ฑ์ค๋ก ๊ฐ์ง๋)
19+ List <Integer >[] bucket = new List [nums .length + 1 ]; // freq๋ ์ต๋ nums.length
20+ for (int i = 0 ; i < bucket .length ; i ++) {
21+ bucket [i ] = new ArrayList <>();
22+ }
23+
24+ for (Map .Entry <Integer , Integer > entry : freqMap .entrySet ()) {
25+ int num = entry .getKey ();
26+ int freq = entry .getValue ();
27+ bucket [freq ].add (num );
28+ }
29+
30+ // ๋น๋์๊ฐ ๋์ ๋ค์์๋ถํฐ ๋ฃ์ด์ค
31+ List <Integer > result = new ArrayList <>();
32+ for (int i = bucket .length - 1 ; i >= 0 && result .size () < k ; i --) {
33+ if (!bucket [i ].isEmpty ()) {
34+ result .addAll (bucket [i ]);
35+ }
36+ }
37+
38+ // k๊ฐ๋ง ๋ฐํ
39+ return result .subList (0 , k ).stream ().mapToInt (i -> i ).toArray ();
40+ }
41+ }
You canโt perform that action at this time.
0 commit comments