1
class Solution {
2
public List<String> topKFrequent(String[] words, int k) {
3
Map<String, Integer> map = new LinkedHashMap<>();
4
for (String word : words) map.put(word, map.getOrDefault(word, 0) + 1);
5
PriorityQueue<Pair<String, Integer>> queue =
6
new PriorityQueue<>(
7
new Comparator<Pair<String, Integer>>() {
8
@Override
9
public int compare(Pair<String, Integer> a, Pair<String, Integer> b) {
10
if (a.getValue() != b.getValue()) return b.getValue() - a.getValue();
11
return a.getKey().compareTo(b.getKey());
12
}
13
});
14
map.forEach(
15
(key, val) -> {
16
queue.add(new Pair(key, val));
17
});
18
List<String> list = new ArrayList<>();
19
while (k > 0) {
20
list.add(queue.poll().getKey());
21
k--;
22
}
23
return list;
24
}
25
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0