LeetCode692題 前K個高頻單詞

2021-10-10 16:21:13 字數 1378 閱讀 9717

題目描述

給一非空的單詞列表,返回前 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 為出現次數最多的兩個單詞,均為...