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