1
+ import java .util .HashMap ;
2
+ import java .util .Map ;
3
+ import java .util .PriorityQueue ;
4
+
5
+ /**
6
+ * [νμ΄]
7
+ * 1. <μ«μ: λΉλμ>λ₯Ό μ μ₯νλ HashMapκ³Ό [λΉλμ, μ«μ]λ₯Ό μ μ₯νλ PriorityQueueλ₯Ό μ μΈνλ€.
8
+ * 2. HashMapμ μ«μλ³λ‘ λΉλμλ₯Ό ν¨κ» μ μ₯ν΄μ ν΄μν
μ΄λΈμ λ§λ λ€.
9
+ * 3.
10
+ * <p>
11
+ * [μ°μ μμ νμ μ¬μ©λ μλ£κ΅¬μ‘°]
12
+ * 1. λ³λ ν΄λμ€λ₯Ό μ μΈ
13
+ * 2. μꡬμ¬ν μλ£ν λ°°μ΄μ μ μΈνλ€.
14
+ * μ²μμλ λ³λ ν΄λμ€λ₯Ό μ μΈνλ€κ° κ°μ΄ 2κ°μ΄λ©° μκ³ λ¦¬μ¦ λ‘μ§ μμ²΄κ° μ΄λ €μμ int[] κ΅¬μ‘°λ‘ νμ΄νλ€.
15
+ * (μ£Όλ‘ μκ³ λ¦¬μ¦μ΄ μ΄λ €μ°λ©΄ κ°λ
μ±μ΄ λμλλΌλ μλ£κ΅¬μ‘°λ₯Ό λ¨μννλ μ΅κ΄μ΄ μλ€)
16
+ * <p>
17
+ * <p>
18
+ * [μ΄λ €μ λ μ ]
19
+ * 1. μ°μ μμ νλ λ§€λ² μμκ° μΆκ°λ λλ§λ€ λ΄λΆ μ λ ¬μ μννκΈ° λλ¬Έμ μ°μ°μ μννλ©΄μ kκ°λ₯Ό μ μ§ν΄μΌ νλ€.
20
+ * λν κΈ°μ‘΄ [λΉλμ, μ«μ]λ₯Ό λ²λ €μΌλ§ μ¬λ°λ₯Έ λ΅μ λμΆν μ μμλ€.
21
+ * 2. [μ«μ, λΉλμ]λ‘ μ μ₯νλ κ²λ§ μκ°νλλ λ΄λΆ μ λ ¬μ μ΄λ»κ² νμ§ λͺ»ν΄μ κ΅μ₯ν κ³ λ―Όνλ€. μ λ΅μ λ°λμλ€.
22
+ * </p>
23
+ */
24
+ class Solution {
25
+ public int [] topKFrequent (int [] nums , int k ) {
26
+ int [] answer = new int [k ];
27
+
28
+ Map <Integer , Integer > map = new HashMap <>();
29
+ for (int n : nums ) {
30
+ map .put (n , map .getOrDefault (n , 0 ) + 1 );
31
+ }
32
+ PriorityQueue <int []> pq = new PriorityQueue <>((a , b ) -> a [0 ] - b [0 ]);
33
+
34
+ for (int key : map .keySet ()) {
35
+ pq .add (new int []{map .get (key ), key });
36
+ if (pq .size () > k ) {
37
+ pq .poll ();
38
+ }
39
+ }
40
+
41
+ for (int i = 0 ; i < k ; i ++) {
42
+ if (!pq .isEmpty ()) {
43
+ answer [i ] = pq .poll ()[1 ];
44
+ }
45
+ }
46
+ return answer ;
47
+ }
48
+ }
0 commit comments