Skip to content

Commit c29f414

Browse files
committed
solve 347
1 parent 6709254 commit c29f414

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
}

0 commit comments

Comments
ย (0)