題目描述
給一非空的單詞列表,返回前 k 個出現次數最多的單詞。
返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。
示例 1:
輸入: [「i」, 「love」, 「leetcode」, 「i」, 「love」, 「coding」], k = 2
輸出: [「i」, 「love」]
解析: 「i」 和 「love」 為出現次數最多的兩個單詞,均為2次。 注意,按字母順序 「i」 在 「love」 之前。
示例 2:
輸入: [「the」, 「day」, 「is」, 「sunny」, 「the」, 「the」, 「the」, 「sunny」, 「is」, 「is」], k = 4
輸出: [「the」, 「is」, 「sunny」, 「day」]
解析: 「the」, 「is」, 「sunny」 和 「day」 是出現次數最多的四個單詞,出現次數依次為 4, 3, 2 和 1 次。
注意:假定 k 總為有效值, 1 ≤ k ≤ 集合元素數。
輸入的單詞均由小寫字母組成。
解題思路
首先我們將原列表words去重結果傳給新引數word,對word進行排序(為什麼要排序?防止出現目標結果中單詞出現次數相同的情況,那由題目要求我們應當按字母順序排序)我們將word中每個單詞在words的出現次數依次新增至整型列表 t 中,通過k次迴圈,依次取得前k個最大值對應的單詞,每取得一次後,將其出現次數設為0,那麼下次再找時就不會再找該單詞,從而實現每次迴圈總是能找到第n次尋找的最大出現次數以及對應的單詞。
**
class
solution
:def
topkfrequent
(self, words: list[
str]
, k:
int)
-> list[
str]
: word=
list
(set
(words)
)
word.sort(
) l=
len(word)
t=w=
for i in
range
(l):))
while k:
m,n=0,
0for i in
range
(l):
if m: m=t[i]
n=it[n]=0
) k-=
1return
(w)
LeetCode 692 前K個高頻單詞
題目 給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。示例 1 輸入 i love leetcode i love coding k 2 輸出 i love 解析 i 和 love 為出現次數最多的兩個單詞...
前K個高頻單詞 leetcode 692
給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。示例 1 輸入 i love leetcode i love coding k 2 輸出 i love 解析 i 和 love 為出現次數最多的兩個單詞,均為...
LeetCode692 前K個高頻單詞
給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。示例 1 輸入 i love leetcode i love coding k 2 輸出 i love 解析 i 和 love 為出現次數最多的兩個單詞,均為...