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