給一非空的單詞列表,返回前 k 個(gè)出現(xiàn)次數(shù)最多的單詞。
返回的答案應(yīng)該按單詞出現(xiàn)頻率由高到低排序。如果不同的單詞有相同出現(xiàn)頻率,按字母順序排序。
示例 1:
輸入: [“i”, “l(fā)ove”, “l(fā)eetcode”, “i”, “l(fā)ove”, “coding”], k = 2
輸出: [“i”, “l(fā)ove”]
解析: “i” 和 “l(fā)ove” 為出現(xiàn)次數(shù)最多的兩個(gè)單詞,均為2次。
注意,按字母順序 “i” 在 “l(fā)ove” 之前。
注意:
假定 k 總為有效值, 1 ≤ k ≤ 集合元素?cái)?shù)。
輸入的單詞均由小寫字母組成。
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/top-k-frequent-words
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
思路:先將元素與其對(duì)應(yīng)次數(shù)存入哈希表中,然后將哈希表中的key集合存入list中,然后對(duì)list進(jìn)行排序
class Solution {
public List<String> topKFrequent(String[] words, int k) {
HashMap<String,Integer> map=new HashMap<>();
for(String str:words)
{
map.put(str,map.getOrDefault(str,0)+1);
}
ArrayList<String> res=new ArrayList<>(map.keySet());
Collections.sort(res,(v1,v2)->map.get(v1).equals(map.get(v2))?v1.compareTo(v2):map.get(v2)-map.get(v1));
return res.subList(0,k);
}
}
因篇幅問(wèn)題不能全部顯示,請(qǐng)點(diǎn)此查看更多更全內(nèi)容
Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號(hào)-2
違法及侵權(quán)請(qǐng)聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬(wàn)商天勤律師事務(wù)所王興未律師提供法律服務(wù)