692 前K個高頻單詞

2021-10-19 14:24:18 字數 2004 閱讀 1727

給一非空的單詞列表,返回前 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 ≤ 集合元素數。

輸入的單詞均由小寫字母組成。

擴充套件練習:

嘗試以 o

(n log k) 時間複雜度和 o

(n) 空間複雜度解決。

class

solution

void

down

(int i,

int n)

else

if(child+

1(m[str[child]

]==m[str[child+1]

])&&(str[child]

>str[child+1]

))if(m[str[child]

]>m[str[parent]])

elseif(

(m[str[child]

]==m[str[parent]])

&&(str[child]

child=

2*child+1;

}}vector

topkfrequent

(vector

& words,

int k)

for(mapint>

::iterator it=m.

begin()

;it!=m.

end(

);it++

)for

(int i=size/2-

1;i>=

0;i--

)for

(int i=

1;i<=k;i++

)

vectorv;

for(

int i=size-

1;i>=size-k;i--

)return v;

} mapint>m;

vectorstr;

int size;

};

class

solution);

if(q.

size()

>k) q.

pop();

} vectorv;

while

(!q.

empty()

)reverse

(v.begin()

, v.

end())

;return v;}}

;

692 前K個高頻單詞

2021 05 20 leetcode每日一題 標籤 堆 字典序 雜湊表 題目 給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。輸入 i love leetcode i love coding k 2 輸出...

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 為出現次數最多的兩個單詞,均為...