原题
https://leetcode-cn.com/problems/top-k-frequent-words/
思路
先哈希
再排序,排序代码是经典(值得一看)
题解
class Solution {
public List<String> topKFrequent(String[] words, int k) {
Map<String, Integer> map = new HashMap<>();
for (String word : words) {
map.put(word, map.getOrDefault(word, 0)+1);
}
List<String> list = new ArrayList<>();
for(Map.Entry<String, Integer> entry : map.entrySet()) {
list.add(entry.getKey());
}
// 排序的代码是经典(值得一看)
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return map.get(o1)==map.get(o2) ? o1.compareTo(o2) : map.get(o2)-map.get(o1);
}
});
return list.subList(0, k);
}
}